文章目录
SpringBoot简介
便于搭建 基于Spring的工程 的脚手架,减少xml配置;
帮助开发人员快速搭建大型的Spring项目,简化工程配置,依赖管理
SpringBoot快速入门
- 开发步骤:
- 添加依赖(启动器依赖,spring-boot-starter-web)
- 创建启动器类
- 创建处理器Controller
- 测试
spring-boot-starter-web默认的应用服务器端口是8080
Java代码方式配置
- 在类上加
@Configuration
将Java文件识别为配置文件 @PropertySource("classpath:jdbc.properties")
加载配置文件
使用注解方式配置jdbc连接
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource getDateSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
SpringBoot属性注入的方式
使用@ConfigurationProperties
实现SpringBoot的配置文件配置项读取和应用
- 使用
@ConfigurationProperties
编写配置类,将配置文件配置项设置到对象中
JdbcProperties.java
//prefix = "jdbc" 表示jdbc.properties中的属性都是以jdbc.开头的
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
JdbcConfig.java
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DataSource getDateSource(JdbcProperties jdbcProperties) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
}
- 在方法上使用
@ConfigurationProperties
JdbcProperties.java
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
注意:jdbc.properties文件要改名为application.properties
要导入spring-boot-configuration-processor坐标
yaml配置文件
- yaml与properties配置文件除了展示形式不相同以外,其它功能和作用都是一样的;在项目中原路的读取方式不需要改变。
- yaml与yml一样,只是叫法不同
- yml文件的特征:
- 树状层级结构展示配置项
- 配置项之间如果有关系需要分行空两格
- 配置项如果有值,需要在
:
之后空一格再写配置值
jdbc:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/heima
username: root
password: root
key:
abc: cba
def:
- g
- h
- j
- SpringBoot允许多个yml配置文件,这些配置文件的名称必须为
application-***.yml
,并且这些配置文件必须要在application.yml
配置文件中配置之后才可以使用
#激活配置文件;需要指定其它的配置文件名称 ,只需要写application-后面的值
spring:
profiles:
active: abc,def
- properties和yml配置文件同时存在,若存在同名配置,以properties为主
自动配置原理
- 在
META-INF\spring.factories
文件中定义了很多自动配置类;可以根据在pom.xml文件中添加的 启动器依赖自动配置组件 - 通过如下流程可以去修改application配置文件,改变自动配置的组件默认参数
lombok应用
- 实现实体类的开发简化,不需要手动编写 getter/setter 等方法
- 使用:
- IDEA中安装 lombok 插件
- 添加lombok依赖
lombok
- 在pojo上添加注解
- 在Bean上使用:
@Data :自动提供getter和setter、hashCode、equals、toString等方法
@Getter:自动提供getter方法
@Setter:自动提供setter方法
@Slf4j:自动在bean中提供log变量,其实用的是slf4j的日志功能。
import lombok.Data;
@Data
public class user {
private String name;
private Integer age;
}
logging:
level:
com.itheima: debug
org.springframework: info
先在要进行日志记录的类上加上
@slf4j
注解,然后在application.yml配置文件中配置级别
整合SpringMVC端口和静态资源
- 修改tomcat的端口和访问项目中的静态资源
- 修改tomcat端口:
查询xxxProperties,设置配置项(前缀+类变量名)到application配置文件中
#tomcat端口
server:
port: 80
- 访问项目中的静态资源:
autoconfigure/web/Resource下查看CLASSPATH_RESOURCE_LOCATIONS
创建static文件夹到resources目录下,并放置静态资源然后访问这些资源
整合SpringMVC拦截器
- 步骤
- 编写拦截器(实现HandlerInterceptor)
- 编写配置类实现 WebMvcConfigurer,在该类中添加各种组件
- 测试
WebMvcConfigurer.java
@Configuration
public class MvcConfig implements WebMvcConfigurer {
//注册拦截器
@Bean
public MyInterceptor myInterceptor(){
return new MyInterceptor();
}
//添加拦截器到spring mvc拦截器链
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor()).addPathPatterns("/*");
}
}
整合-连接池
- 配置Spring Boot自带默认的hikari数据库连接池(效率比Druid要高,安全性较低)
- 步骤
- 添加
spring-boot-starter-jdbc
依赖坐标 - 在application配置文件中指定数据库相关参数
- 添加
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springboot_test
username: root
password: root
整合-Mybatis
- 设置mybatis的实体类别名,输出执行sql语句配置项
- 步骤:
- 添加启动器依赖
mybatis-spring-boot-starter
- 配置Mybatis:实体类别名包,日志,映射文件等
- 在SpringBoot启动器类中配置MapperScan
- 添加启动器依赖
mybatis:
# 实体类别名包路径
type-aliases-package: com.itheima.pojo
# 映射文件路径
# mapper-locations: classpath:mappers/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
整合-Junit
- 步骤
- 添加启动器依赖spring-boot-starter-test
- 编写测试类(在类上Ctrl+Shift+T)
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void queryById() {
User user = userService.queryById(8L);
System.out.println("user = " + user);
}
}
在Spring Boot项目中如果编写测试类则必须要在类上面添加@SpringBootTest
项目部署
- 步骤
- 需要添加打包组件将项目中的资源、配置、依赖包打到一个jar包中
可以使用maven的package
- 控制台输入命令部署:
java -jar 包名
- 需要添加打包组件将项目中的资源、配置、依赖包打到一个jar包中
pom.xml
<build>
<plugins>
<!-- 打jar包时如果不配置该插件,打出来的jar包没有清单文件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
部署运行
java -jar 包名
关闭项目
- cmd中输入
jps
- 打开任务管理器,详细信息,结束进程即可
参考
2020年IDEA版黑马Java :BV1WZ4y1H7du