Spring boot 自动装配 梳理记录 +简单自定义实现

  1. 启动类注解 @SpringBootApplication - 复合注解,其中包含 @EnableAutoConfiguration
  2. @EnableAutoConfiguration - 复合注解 开启自动配置 ,
    其中包含 @AutoConfigurationPackage @Import({AutoConfigurationImportSelector.class})
  3. @AutoConfigurationPackage 其中 @Import({Registrar.class}) ,而 Registrar 获取扫描包路径
  4. @Import({AutoConfigurationImportSelector.class}) 类中 selectImports方法,将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中。并且加载类路径 META-INF/spring.factories,通过Properties加载资源. 在其中获取EnableAutoConfiguration指定的值-就是全路径如:com.xx.xx.xxAutoConfiguration.
  5. 自动配置类中有注解,@Configuration @EnableConfigurationProperties({MybatisProperties.class})
  6. @ConditionalOnXX代表自动装配条件,如 @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) 则是,这两个类加载后,才进行自动装配。
  7. @EnableConfigurationProperties({MybatisProperties.class}) ,用于配置文件中的指定键值对映射到一个java实体类上。所有。就可以在 yaml中直接配置属性值

图解:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单实现- 自定义自动装配

@ConfigurationProperties(prefix = "spring.userdef.model")
public class UserDefProperties {
    private String userName;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }


}
@Slf4j
@EnableConfigurationProperties(value = UserDefProperties.class)
public class UserDefAutoConfiguration {

    @Autowired
    private UserDefProperties userDefProperties;

    @Bean
    public User user(){
        log.info("自定义自动装配UserDefAutoConfiguration.....");
        User user = new User();
        user.setUserName(userDefProperties.getUserName());
        return user;
    }
}

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.config.UserDefAutoConfiguration

在这里插入图片描述

spring:
  userdef:
    model:
      user-name: hexiaoshu

    @Resource
    private User user;

    @GetMapping("/test")
    public Result test(){
        return Result.ok(user.getUserName());
    }


在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值