一. SpringBoot引言
1.1 为什么要用SpringBoot
- 之前使用SSM 要做很多SSM的模板配置
- 编写很多XML文件,去做各个插件的配置
- 维护成本高
- SSM部署麻烦,依赖第三方容器:Tomcat
- 开发笨重,很多过程冗余
1.2 SpringBoot
- SpringBoot就是一个工具库,可以自动的帮我们把一些常用的框架整合到一起,并且隐藏框架的整合细节,实现敏捷开发
1.3 SpringBoot特点
SpringBoot项目中不需要模板化的配置
再SpringBoot中整合第三方框架时,只需要导入响应的starter依赖包,就自动整合了
SpringBoot默认只有一个.propertise的配置文件,不推荐使用xml,后期会采用.java文件来实现配置
SpringBoot工程在部署时,采用的时jar包方式,内部自动依赖了tomcat,提供了多环境的配置
后期要学习的微服务框架要基于SpringBoot
二. SpringBoot的使用
2.1 创建一个SpringBoot工程
- 选择构建项目类型>Spring Initializr
- 定义项目名等信息
- 选择依赖
2.2 SpringBoot的目录结构
- pop.xml:
- 制定了一个父工程,并帮助我们声明了Starter依赖的版本
- 项目的元数据:包名,项目名,版本号
- 指定properties信息:
- 导入依赖:
- 插件
- .gitignore文件:默认帮我们虎落了一些文件和目录
- src目录
-src
-main
-java
-项目包名
-启动类.java #需要将项目的Controller类放在启动类的子包中或同级目录下
-resources
-static #存放静态资源的
-templates #存放模板页面
-application.properties #SpringBoot默认的唯一的配置文件
-test #测试目录
2.3 SpringBoot的三种启动方式
- 运行启动类的Main方法
maven命令:
mvn spring-boot:run
- 采用启动jar包的形式,先把项目打成一个jar包然后启动即可
三. SpringBoot常用注解
3.1 @Configuration和@Bean
- @Configuration
- 相当与
<beans>
- @Bean
- 相当于
<bean>
@Configuration //代表当前类是一个配置类
public class UserConfig {
@Bean(value="user") //构建Bean 交由Spring管理
public User user() {
User user = new User();
user.setId(1);
user.setName("张三");
return user;
}
}
3.2 @SpringBootApplication
这是一个复合注解,重点关注三个
- @SpringBootConfiguration
- 就是一个@Configuration注解
- @EnableAutoConfiguration
- 实现自动装配的注解,如果pop中导入了相应的依赖将会自动装配上相应的配置类,
- @ComponentScan
- 相当于注解扫描<context:component-scan basePackage=“包名”/>
四.SpringBoot常见配置
4.1 配置文件格式
SpringBoot 默认使用.properties文件,但是更推荐使用yml文件
- 会自动换行自动缩进
- 避免冗余,更轻
注意:
严格遵循换行和缩进
在填写value时,冒号后面一定要跟空格
4.2 多环境配置
在application.yml文件中添加一个配置项
spring: profiles: active:环境名
在resource目录下,创建多个application-环境名.yml文件即可
在部署工程时,通过
java -jar 项目文件 --spring.profiles.active:环境名
4.3 引入外部配置文件信息
- 当仅需要配置文件中的某一项值的时候,可以在要引用的类中使用
@Value("${配置文件的key}") private String 配置文件的key;
这样在类中就可以直接调用key,来获取配置文件中的value
需要获取多个同一前缀的值时:可以使用如下方式
@Data @ConfigurationProperties(prefix = "统一前缀") @Component public class XXXProperties { private String xxx; ... }
XXX: xxx:xxx yyy:yyy ...
在类中需要引用时,使用如下方式引用
@Autowired private XXXProperties properties;
4.4 热加载配置
- 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
- 更改Settings中的配置
- 重新构建一下项目,即可实现热更新
五. SpringBoot整合MyBatis
5.1 Xml整合
- 导入依赖
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- mybatis整合-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
- 创建对应实体类和mapper接口
- 在application中修改mybatis设置
mybatis: #扫描mapper映射文件的位置 mapper-locations: classpath:mapper/*.xml #别名扫描 映射 type-aliases-package: com.test.test.entity #驼峰映射 configuration: map-underscore-to-camel-case: true
- 连接池配置
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql:///batis?serverTimezone=UTC username: root password: 1234 type: com.alibaba.druid.pool.DruidDataSource
- 测试
@SptingBootTest class UserMapperTest{ @Autowired private UserMapper userMapper; @Test void findAll() { List<TUser> all = userMapper.findAll(); for (TUser user2 : all) { System.out.println(user2); } } }
5.2 注解整合
- 创建mapper.java文件,把Mybatis注解放进去
public interface UserMapper { @Select("select * from t_user") List<TUser> findAll(); @Select("select * from t_user where id=#{id}") TUser findOne(Integer id); @Insert( "insert into t_user values(#{id},#{username},#{password})") Integer insert(TUser user); }
- 修改配置文件使其打印SQL语句
logging: level: com.test.test.mapper: DEBUG
- 测试
5.3 整合分页助手
导入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>
- 使用
@Test void findAll() { PageHelper.startPage(1,3); List<TUser> all = userMapper.findAll(); PageInfo<TUser> pageInfo =new PageInfo<>(all); for (TUser user : pageInfo.getList()) { System.out.println(user); } }
六. Spring整合JSP
- 导入依赖
<!-- JSP核心依赖--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- JSTL依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
- 创建webapp/WEB-INF目录
- 设定view的前缀和后缀
srping: mvc: view: prefix: /WEB-INF/ suffix: .jsp
- 编写controller