1.springboot自动装配原理
我们在使用springboot时,并没有像之前项目加载我们的前端控制DispatcherServlet,也没有写编码过滤器。但是springboot可以完成请求以及编码的设置。
原理: 主启动类上的@SpringBootApplication注解上,而该注解是一个复合组件,而在复合注解中存在@EnableAutoConfiguration, 这个@EnableAutoConfiguration注解也是一个复合注解,包含@Import---而@Import注解导入一个AutoConfigurationImportSelector 【自动配置选择器】,在该类中存在一个方法getAutoConfigurationEntry --作用:得到自动配置类的实体。而这些自动配置类会完成相应的自动装配。
2.springboot整合数据原--连接数据库
2.1默认数据源
1.引入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
springboot自动配置会加载jdbc的自动配置类---读取springboot配置文件中数据源的信息,从而完成数据源的自动配置。
2.application配置文件中配置 数据源
#配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345
spring.datasource.url=jdbc:mysql://localhost:3306/test1?serverTimezone=Asia/Shanghai
3.测试
@SpringBootTest
class Qy168Springboot03ApplicationTests {
@Autowired
private DataSource dataSource;//springboot帮你完成数据源的自动装配
@Test
void contextLoads() throws SQLException {
System.out.println(dataSource.getConnection());
}
}
2.2设置Druid数据源
1.引依赖
<!--druid数据源的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
2.数据源配置
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.username=root spring.datasource.druid.password=123456 spring.datasource.druid.url=jdbc:mysql://localhost:3306/test1?serverTimezone=Asia/Shanghai #初始化数量 spring.datasource.druid.initial-size=5 #最大数据源数量 spring.datasource.druid.max-active=10
3.测试
3.springboot整合mybatis框架
ssm===>spring框架需要配置SqlSesssionFactoryBean对象,还有配置DAO接口的代理实现类。
springboot会自动配置SqlSesssionFactoryBean对象,必须引入starter依赖
1.依赖
<!--mybatis和springboot整合的依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.创建实体类
@Data
public class User {
private Integer id;
private String username;
private String password;
private String name;
private Double balance;
}
3.dao接口
public interface UserDao {
public List<User> findAll();
}
4.mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace必须和dao接口的名称一模一样-->
<mapper namespace="com.aaa.qy168springboot03.dao.UserDao"><select id="findAll" resultType="com.aaa.qy168springboot03.entity.User">
select * from t_user
</select>
</mapper>
5.修改application配置文件内容 指定mapper文件 路径
mybatis.mapper-locations=classpath:/mapper/*.xml
4.springboot整合pageHeper分页插件
1.依赖
<!--pageHelper的依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.5</version>
</dependency>
2.测试
@Test
public void testFindAll(){
PageHelper.startPage(1,3);//拦截器: select * from t_user
List<User> all = userDao.findAll();
//把查询的结果封装到PageInfo类中
PageInfo<User> pageInfo=new PageInfo<>(all);
System.out.println("总条数:"+pageInfo.getTotal());
System.out.println("总页数:"+pageInfo.getPages());
System.out.println("当前页的记录:"+pageInfo.getList());
}
5.springboot整合定时器
可以在规定的时间内执行相应的代码。
比如: OSS文件上传---OSS的文件冗余的文件。----OSS的浪费。---->指定的时间自动删除。[夜间删除]
比如: 下单--->30分钟未支付---取消订单。
1.定时器依赖
<!--引入定时器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2.编写定义的业务代码
@Component
public class scheduld {
@Autowired
private EmpDao empDao;
// 定时器任务执行代码
@Scheduled(cron = "0/5 * * * * ? ")
public void show(){
System.out.println("----------------");
empDao.inset(new Emp());
}
}
3.开启定时注解驱动