SpringBoot使用规则:
父模块继承:
SpringBoot程序的pom文件内会自带一个 spring-boot-starter-parent 父模块,该父模块下 属性 标签内含有所有的 版本,依赖管理下含有所有的可选依赖
起步依赖:(关键字starter)
添加起步依赖:
在dependency标签内添加含有starter的起步依赖,其内含了所需工程的全部依赖,比如web起步依赖,就内置了做web程序需要的所有依赖(甚至内含有tomcat的起步依赖),方便了开发
关于操作:
当需要切换依赖时(比如tomcat服务器切换成jetty服务器)
只需要在导入了tomcat起步依赖的 web starter 那个依赖内设置排除依赖(双重嵌套的excluson标签,内添加需要排除的那个依赖的groupid和artifactidt属性)
然后新添加对应的依赖即可
(关于tomcat和jetty依赖的一点区别:jetty更加轻便,随用随加,不过对于大型工程,还是tomcat更擅长)
修改SpringBoot访问的端口号:【三个方法的优先级:pro>yml>yaml】
方法1 . resources目录下的 application.properties 配置文件内,直接将 server.port 设置成 80 端口【server.port=80】
server:
方法2【最常用】 . resources目录下新建application.yml,添加: port: 80 配置
方法3 . 与方法2相同的配置方法,但是文件后缀改成 yaml
(原本是8080,修改后,地址栏不再需要填写8080)
注:
在resources目录下新建config包,在包内进行端口配置,会优先于仅仅是在resources目录下配置
配置日志过滤级别:如下,不同的级别就在root后添加不同的过滤等级(info级别是默认的)
logging: l logging.level.root=info
level: l 前者是yml风格的配置,后者是properties风格的配置
root: info l
关于yml后缀的文件:
格式:(注意冒号前的空格必不可少)
asp:
每一行首字母的位置表示了前后层级,首字母位置平行,代表了两行是同一级别的,空格的多少并没有影响 pst : 23
sss : 00
| arr : |
- 值
当使用数组时, | - 值 像这样,每一个元素的前面添加一个减号即可 |
- 值
yml内数据的读取:
方法1:设置对应属性的变量,在变量上添加@Value注解,注解内"${}"形式获取数据
方法2:设置一个Environment类型变量,添加注解@Autowire,这个变量将会读取所有的yml数据,接下来对这个变量使用getProperty( ),括号内添加对应的属性名即可
pojo类读取yml文件内的数据:
1 . 在对应的pojo类上方添加@Component注解,定义为Bean,纳入Spring管理
2 . 添加@ConfigurationProperties注解,括号内为prefix属性添加需要读取使用的yml数据对应的标签
3 . 在需要使这个pojo类自动装配时,创建这个对象,添加@Autowire属性,这样这个对象内的变量和yml数组或者数据会根据 变量名和标签一一对应的规则进行自动装配
注:当对pojo自定义对象使用自动封装时,可能出现一个警告,这时在pom内添加以下注解
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
基于yml的多环境开发:
配置多个端口号:server: ,之间用前方不空格三个减号隔开,即可配置成多个互不干扰的环境
port :80
---
server:
port :81
为了区分不同的环境,在每一个环境内添加 spring:profiles:自定义开发环境类型名(如:测试环境)【pro 生产 dev 开发 test 测试】
然后在配置好的环境上方,添加spring:profiles:active:想要使用的开发环境类型名,这样就会自动使用想要使用的开发环境类型了
springboot基于yml文件和pom文件实现多环境开发:
配置属性:
添加profiles标签,内置多个profile,每一个profile和一个开发环境对应
配置id和属性profile.active(自定义属性名)之后添加标签activation标签确定默认环境
例: |
<profiles>
<profile>
<id>pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
添加解析插件:
为了能让yml文件内使用 ${ }占位符 读取属性,在pom内添加插件:
在这个插件内将 configuration 内的 useDefaultDelimiters 标签设置为true,resources目录下的 ${ } 就可以被解析了
encoding内设置字符集UTF-8,防止可能出现的中文乱码问题
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>UTF-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
yml文件:
yml文件内正常配置三个环境以及对应的端口号,三个环境的上方添加 spring:profiles:active:${profileactive} 配置,这样就会根据这个属性读取对应的标签
打包运行:
配置完成后,点击右栏lifecycle 的 clear操作,清除之前的干扰因素,然后package打包成jar,从target目录下查找,然后在文件夹打开这个jar
地址栏直接cmd ,输入 java -jar jar包名 ,执行。
运行时需要更改开发环境类型(端口号):
以上指令后,添加 --spring.profiles.active=自定义的开发环境名,运行即可(停止运行使用ctrl + c)
以上指令后,添加 --server.port=XXX 临时执行 XXX端口的运行
修改环境:
在resources下创建config包,包内的配置的执行 优先级 比resources下的 包外文件 高
当需要进行环境修改时,直接将需要的那个yml配置文件复制后,放在通过package打的 jar包所在的文件夹 内,呼出cmd,就会直接按照这个文件的环境进行设置
如果在jar所在文件夹内创建config文件夹,在文件夹内添加yml,这个优先级将是最高的(springboot的2.5.0和2.4.0版本内存在一个bug,那就是config文件夹内必须有一个其他的文件夹才能正常执行)
总结:(执行优先级)
jar文件夹内的config文件夹内的yml > jar文件夹内的yml > resources目录下的config内的yml > resources下的yml
SpringBoot整合junit:
在自动生成的测试类内直接创建对象并配置@Autowire标签,在@Test内直接调用对象的方法
原理:
Test类内的 @SpringBootTest 注解会自动解析 Java目录下的同层包下的引导类(创建工程时自带的Application启动类)
Application类内的@SpringBootApplication类内置了@SpringBootConfiguration注解【内置@Configuration注解】,这个注解将会使Spring扫描同包下以及各子包内的所有类,有@Service等的类就被扫描到了
SpringBoot整合mybatis框架:
因为Spring和SpringMvc的功能被SpringBoot替代了,所有只需要整合Mybatis框架
要点:
可以自行配置数据源依赖,然后在yml内进行数据源配置:
spring:datasource:下面是同级的driver,url,username,password,type(只有单独配置数据源时才有type,type的值是数据源【如:druid】)
Dao层接口需要配置@Mapper开启自动映射,自动创建实现类(之前有@ConponentScan注解进行扫描,现在没有了,需要配置@Mapper),Dao层内还是配置@Select等注解,以及对应的操作