springboot
排除原有的依赖,新增依赖
springboot替换tomcat为jetty
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
修改服务器端口
在application.properties里面配置:
server.port=8088
也可以添加配置文件,但是配置文件的格式都是application.xx
对于properties、yaml、yml配置文件,当三个文件都存在的时候,优先级:properties>yml>yaml
日志信息配置
logging:
level:
root: warn
yaml
一种数据序列化格式,容易阅读,容易与脚本语言交互,以数据为核心,重数据轻格式。扩展名:yml(主流)、yaml
语法
大小写敏感、每行结尾用冒号结束、使用缩进表示层级关系,同层级左侧对齐,只允许使用空格、属性值前面添加空格,属性名与属性之间使用冒号+空格作为分隔、#表示注释
logging:
level:
root: warn
com: fatal
server:
compression:
enabled: on
读取yml数据
yml配置文件数据:
classroom: 2班
student:
name: 张三
age: 16
hobbies:
- basketball
- football
- volleyball
控制层取值:
@Value("${classroom}")
private String cls;
@Value("${student.hobbies[0]}")
private String hobby;
如果想要获取全部的属性值:
@Autowired
private Environment environment;
通过getProperty方法获取配置文件中的值:
environment.getProperty("classroom")
自定义实体类接收指定数据
@Component //交给spring容器管理
@ConfigurationProperties(prefix = "student") //读取配置文件的指定数据
public class Student {
private String name;
private Integer age;
private String[] hobbies;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", hobbies=" + Arrays.toString(hobbies) +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String[] getHobbies() {
return hobbies;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}
}
此时springboot项目上面会有一个警告,我们添加如下依赖,就不会报错了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
多环境开发
在yml中配置profile:
#开发环境
spring:
config:
activate:
on-profile: dev
server:
port: 8081
---
#测试环境
spring:
config:
activate:
on-profile: test
server:
port: 8088
在properties中配置profile:
主启动配置文件application.properties
#激活生产环境
spring.profiles.active=pro
生产环境配置文件application-pro.properties
server.port=8081
开发环境配置文件application-dev.properties
server.port=8088
激活环境
将springboot项目打包,然后在启动springboot项目的时候添加参数
java -jar springboot项目的jar包.jar --spring.profiles.actives=dev
但是maven也可以设置环境,springboot在创建的时候是基于maven,因此当maven想影响spring boot的配置文件
maven的:
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.active>dev</profile.active>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
properties文件:
spring:
profiles:
active: ${profile.active}
---
spring:
config:
activate:
on-profile: dev
server:
port: 8081
---
#测试环境
spring:
config:
activate:
on-profile: test
server:
port: 8088
需要添加配置:
<!--对资源文件开启默认占位符的解析-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
删除target,重新打包,会发现端口号改变,选择的环境是maven启用的环境
配置文件的优先级
config目录的配置文件优先级高于外面的配置文件,在jar包所在的目录下面添加配置文件application.yml的优先级高于在idea的application.yml和config下面的application.yml,开发过程一般在这配置,等到发布的时候去掉这个。
整合
整合junit
springboot的test目录下面有个test类,将需要测试的类配置进去,启动就可以测试
@SpringBootTest
class SpringbootProjApplicationTests {
@Autowired
private StudentService service;
@Test
void contextLoads() {
service.show();
}
}
实现SSM整合
添加依赖:
<!--todo 导入druid依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.15</version>
</dependency>
配置数据源:
#todo 配置数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/4031
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
mapper层添加注解:
package com.java.dao;
import com.java.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper//todo 让springboot认识他为mapper
public interface UserDao {
@Select("select * from user")
List<User> selectAll();
}
按照需求编写功能