bean依赖属性配置

bean依赖属性配置

文章目录

java 复制代码
@Data
@ConfigurationProperties(prefix = "cartoon")
public class CartoonProperties {
    private Cat cat;
    private  Mouse mouse;
}
java 复制代码
cartoon:
  cat:
    name: what
    age: 5
  mouse:
    name: how
    age: 6

这样的话,业务bean无需在读取配置文件的操作了。

EnableConfigurationProperties来设置关联,在使用时加载bean,不用时不加载

java 复制代码
@EnableConfigurationProperties(CartoonProperties.class)//关联注解 强制设置哪一个类成为bean
@Data
public class CartoonCatAndMouse {
    private Cat cat;
    private  Mouse mouse;

    @Autowired
    private CartoonProperties cartoonProperties;

    public CartoonCatAndMouse(CartoonProperties cartoonProperties){
        this.cartoonProperties = cartoonProperties;
        cat = new Cat();
        cat.setName(cartoonProperties.getCat()!=null && StringUtils.hasText(cartoonProperties.getCat().getName())?cartoonProperties.getCat().getName():"tom");
        cat.setAge(cartoonProperties.getCat()!=null && cartoonProperties.getCat().getAge()!=null ?cartoonProperties.getCat().getAge():3);
        mouse = new Mouse();
        mouse.setName(cartoonProperties.getMouse()!=null && StringUtils.hasText(cartoonProperties.getMouse().getName())?cartoonProperties.getMouse().getName():"jerry");
        mouse.setAge(cartoonProperties.getMouse()!=null && cartoonProperties.getMouse().getAge()!=null ?cartoonProperties.getMouse().getAge():4);
    }

    public void play(){
        System.out.println(cat.getAge() + "岁的"+cat.getName()+ "和"
                + mouse.getAge()  + "岁的" + mouse.getName() + "打起来了");
    }
}

也可以把业务类的@Component注解取消

启动时,添加注解@Import(CartoonCatAndMouse.class),根据需要来配置bean

java 复制代码
@SpringBootApplication
@Import(CartoonCatAndMouse.class)
public class Springboot29BeanPropertiesApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Springboot29BeanPropertiesApplication.class, args);
        CartoonCatAndMouse bean = ctx.getBean(CartoonCatAndMouse.class);
        bean.play();
    }

}

视频链接:

https://www.bilibili.com/video/BV15b4y1a7yG/?p=155\&spm_id_from=pageDriver\&vd_source=f6debc5a79e3f424f9dde2f13891b158

相关推荐
武昌库里写JAVA15 分钟前
SpringCloud
vue.js·spring boot·毕业设计·layui·课程设计
uhakadotcom1 小时前
Python 量化计算入门:基础库和实用案例
后端·算法·面试
小萌新上大分1 小时前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
uhakadotcom1 小时前
使用Python获取Google Trends数据:2025年详细指南
后端·面试·github
uhakadotcom1 小时前
使用 Python 与 Google Cloud Bigtable 进行交互
后端·面试·github
直视太阳2 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
zkmall2 小时前
HikariCP 源码核心设计解析与 ZKmall开源商城场景调优实践
spring boot·开源
Code成立2 小时前
《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2章 Java内存区域与内存溢出异常
java·jvm·jvm内存模型·jvm内存区域
追逐时光者2 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 33 期(2025年4.1-4.6)
后端·.net
灼华十一2 小时前
Golang系列 - 内存对齐
开发语言·后端·golang