首先 开发ide :eclipse 没有钱买idea 但是据说idea可以很快的搭建SpringBoot框架
jdk:1.8
maven:3.1.1
第一步:
打开
https://start.spring.io/
这个网站
和创建maven项目差不多 写一点配置 然后 右边有集成的框架 写完之后 点 generate 就可以下载了
下载到本地 是个zip 解压之后 得到代码
然后把这对破烂玩意放进项目里
然后pom.xml会报个错
百度了一下在pom.xml 中的
加上maven的版本
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
启动类 即带有@SpringBootApplication注解的类
必须放在所有包的最前面 like
否则会404
------------------------------------------------------------------------------
关于配置文件配置文件名称只能是application.properties或者application.yaml
yaml文件不会写 所以用properties
查资料据说新版springboot写访问路径要加servlet
server.servlet.context-path=/test #一定要加‘/’ 如果不加 启动会报错
server.port=8083
如果接口名字是/test
那么访问接口的路径就是 ip:8083/test/test
sqlserver数据库连接的配置
#数据库连接
spring.datasource.url=jdbc:sqlserver://hostname:port;DatabaseName=dataBaseName
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.username=username
spring.datasource.password=password
#连接池配置
spring.datasource.initialSize=5
spring.datasource.maxActive=50
spring.datasource.minIdle=5
#mybatis配置
mybatis.mapper-locations=classpath*:com/centaline/mapper/*.xml
暂时未研究一个项目连接多库的配置 后续补充
这样启动的时候 会报错
原因是找不到dao层的注入
要在main方法上加一行@MapperScan("com.centaline.mapper")
--------------------------------------------------------------------------------------------------------------------------------
springboot连接多数据源首先更改application.properties
然后要写两个config
config代码如下:
import javax.sql.DataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;@Configuration//注册到springboot容器,相当于原来xml文件里的<beans>@MapperScan(basePackages= {"com.centaline.mapper.mapper1"},sqlSessionFactoryRef="ds1SqlSessionFactory")public class DataSource1Config {@Primary @Bean(name="ds1DataSource")//注入到这个容器 @ConfigurationProperties(prefix="spring.datasource.ds1")//表示取application.properties配置文件中的前缀 //#primary是设置优先,因为有多个数据源,在没有明确指定用哪个的情况下,会用带有primary的,这个注解必须有一个数据源要添加 public DataSource testDataSource() { return DataSourceBuilder.create().build(); }@Primary @Bean(name="ds1SqlSessionFactory") //@Qualifier("xxx")的含义是告诉他使用哪个DataSource public SqlSessionFactory testSqlSessionFactory(@Qualifier("ds1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean=new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/centaline/mapper/mapper1/*.xml")); return bean.getObject(); }@Primary@Bean(name="ds1TransactionManager")//配置事务public DataSourceTransactionManager testTransactionManager(@Qualifier("ds1DataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Primary @Bean("ds1SqlSessionTemplate") public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("ds1SqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); }}
config文件中有mapperscan的配置 所以要把启动类main方法里的mapperscanner删掉
@primary表示默认数据源 多个config文件中必须有个一个primary
config2和1类似 只需更改一下@bean的名字和xml位置
注意:mybatis使用xml写sql的话 必须要加
这一行 要不然会找不到xml的位置
xml文件必须放在src/main/resource下 否则会报
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
至此 springboot框架搭建成功 实现多数据源查询 可以实现基本使用
--------------------------------------------------------------------
eclipse其实集成了springboot的插件 据说可以一键搭建
但是我下载不下来那个插件
spring官网下载页面404了
eclipse商店下载速度一直是0
放弃了
//------------------2020-12-17----------
今天遇到了一个很 不知道怎么形容的问题
在springboot连接多数据源的时候
报了这么一个错
jdbcUrl is required with driverClassName.
无数次百度 告诉我的答案 都是把 application.properties中的jdbcUrl 改为jdbc-url 把driverClassName改为driver-class-name
但是我写的就是jdbc-url
并且找到了报错的位置 我写的driverClassName 也是可以识别出来的
spring.datasource.ds1.jdbcUrl=jdbc:sqlserver://10.7.113.22;DatabaseName=HouseCoinMallspring.datasource.ds1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
翻博客的时候看到了 我以前用的是springBoot2.3.1版本
而现在用的是2.4.0版本
换回2.3.1版本 果然不报错了
并且
spring.datasource.ds1.jdbcUrlspring.datasource.ds1.driver-class-namespring.datasource.ds2.jdbc-urlspring.datasource.ds2.driverClassName这几种写法 都能成功连到数据库
换成2.4.1版本也可以成功 2.4.0版本 不知道是怎么回事 就是不行
//-----------2021-09-16 -------------------
紧跟运维哥脚本 开始学习 springcloud+nacos+sentinel
首先要搭一个springcloud项目
建了好多个module
发现了个问题 我想在A module里 用B module的配置文件的属性 该怎么用呢
答案就是 在Amodule里 加入Bmodule的依赖
<dependency> <groupId>com.centaline</groupId> <artifactId>shopping-usercenter</artifactId> <version>0.1</version></dependency>
这样的
然后把Bmodule的yml文件 改为 application-xxx.yml
然后在Amodule里 加这么点东西 就好了
spring: profiles: active: usercenter,test
当一切都是那么顺利的时候 我想打个包 发一下服务器试试的时候
果然就开始报错 符合我的性格 不报错怎么写代码嘛
一直在报这个东西 好烦啊 百度一下
说是要在父pom上 指定main方法在哪
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <mainClass>com.centaline.mall.Application</mainClass> </configuration> </plugin> </plugins> </build>
加完了
又开始一直报这个错误 好烦啊
找了好多资料 都没有解决 然后想找别的开发兄弟问一下(确实是懒了)
12点了呀 懂得 还是要自己努力
终于 找到了这么一篇文章
上午的时候 确实找到过这篇文章 但是他第一句话就是 有两个打包插件的情况 因为我只有一个 所以当时我就直接关了
下午的时候 又重新的看了一次这个文章 感觉突然 就开窍了
要不然我把没有主函数的module 换个打包插件呢
但是最后不是这样解决的 我是在没有主函数的module上加了一句话
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
这样 问题就解决了 运行起来了 个人感觉 换个插件 意思是一样的 但是我没有试过不敢保证