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

相关推荐
Larcher4 小时前
React Router 不只是页面跳转:从 SPA 路由到权限守卫的完整实践
javascript·后端
Larcher4 小时前
大模型为什么每次回答都不一样?一文搞懂 Temperature、Top K 与 Top P
javascript·后端
LucianaiB6 小时前
毕业老学长给我留的最后一句话是:“AI 写的,别挂我名。” 我直接 神(Seed Evolving) 来!助我!
后端
IvanCodes6 小时前
RAG 实战教程(一):RAG 工作原理与完整流程——分片、索引、召回、重排和生成
人工智能·后端·agent
·薯条大王6 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
CodeSheep7 小时前
稚晖君公司人事大变动,来了!
前端·后端·程序员
小满zs7 小时前
Go语言第八章(函数)
后端·go
stark张宇9 小时前
实战Go高级特性:Context超时控制、defer资源回收与Channel通信的关键避坑点
后端·go
ZJH__GO9 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆10 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程