如何学号SpringBoot
如何学好SpringBoot
框架的框架、底层基于Spring。能调整每一个场景的底层行为。100%项目一定会用到底层自定义
摄影:
- 傻瓜:自动配置好。
- 单反:焦距、光圈、快门、感光度....
- 傻瓜+单反:
- 理解自动配置原理
- 导入starter --> 生效xxxxAutoConfiguration --> 组件 --> xxxProperties --> 配置文件
- 理解其他框架底层
- 拦截器
- 可以随时定制化任何组件
- 配置文件
- 自定义组件
普通开发:导入starter
,Controller、Service、Mapper、偶尔修改配置文件
高级开发:自定义组件、自定义配置、自定义starter
核心:
- 这个场景自动配置导入了哪些组件,我们能不能Autowired进来使用
- 能不能通过修改配置改变组件的一些默认参数
- 需不需要自己完全定义这个组件
- 场景定制化
最佳实战:
- 选场景,导入到项目
- 官方:starter
- 第三方:去仓库搜
- 写配置,改配置文件关键项
- 数据库参数(连接地址、账号密码...)
- 分析这个场景给我们导入了哪些能用的组件
- 自动装配这些组件进行后续使用
- 不满意boot提供的自动配好的默认组件
- 定制化
- 改配置
- 自定义组件
- 定制化
整合redis:
- 选场景:
spring-boot-starter-data-redis
导入配置
场景AutoConfiguration 就是这个场景的自动配置类 - 写配置:
- 分析到这个场景的自动配置类开启了哪些属性绑定关系
@EnableConfigurationProperties(RedisProperties.class)
- 修改redis相关的配置
- 分析组件:
- 分析到
RedisAutoConfiguration
给容器中放了StringRedisTemplate
- 给业务代码中自动装配
StringRedisTemplate
- 分析到
- 定制化
- 修改配置文件
- 自定义组件,自己给容器中放一个
StringRedisTemplate
进入RedisAutoConfiguration
类,可以看到这个配置类的所有属性绑定在RedisProperties.class
里,追进去
发现跟Redis有关的配置都是以spring.data.redis
开头的,所以可以在配置文件里配置Redis
写配置,改配置文件关键项
容器中有什么东西能用呢
@AutoConfiguration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionconfiauration,class, JedisConnectionconfiguration.class})
public class RedisAutoConfiguration{
@Bean
@ConditionalOnMissingBean(name="redisTemplate")
@ConditionalonSingleCandidate(RedisConnectionFactory.class)
public RedisTemplate<0bject,0biect> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<0bject,0bject>template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
@ConditionalonSingleCandidate(RedisConnectionFactory.class)
public StrinaRedisTemplate stringRedisTemplate(RedisconnectionFactory redisconnectionFactory){
return new StringRedisTemplate(redisConnectionFactory);
}
}
可以手动注入StrinaRedisTemplate
自动装配这些组件进行后续使用