如何学号SpringBoot

如何学好SpringBoot

框架的框架、底层基于Spring。能调整每一个场景的底层行为。100%项目一定会用到底层自定义
摄影:

  • 傻瓜:自动配置好。
  • 单反:焦距、光圈、快门、感光度....
  • 傻瓜+单反
  1. 理解自动配置原理
    • 导入starter --> 生效xxxxAutoConfiguration --> 组件 --> xxxProperties --> 配置文件
  2. 理解其他框架底层
    • 拦截器
  3. 可以随时定制化任何组件
    • 配置文件
    • 自定义组件

普通开发:导入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 自动装配这些组件进行后续使用

posted @ 2024-03-02 23:29  不会des  阅读(4)  评论(0编辑  收藏  举报