SpringBoot bean依赖属性配置详细介绍

 更新时间:2022年09月26日 15:42:44   作者:捣蛋孩学编程  
Spring容器是Spring的核心,一切SpringBean都存储在Spring容器内。可以说bean是spring核心中的核心。Bean配置信息定义了Bean的实现及依赖关系,这篇文章主要介绍了SpringBoot bean依赖属性配置

创建实体类

@Data
public class Cat {
    private String name;
    private Integer age;
}
@Data
public class Mouse {
    private String name;
    private Integer age;
}

配置文件application.yml使用固定格式为属性注入数据

cartoon:
  cat:
    name: "图多盖洛"
    age: 5
  mouse:
    name: "泰菲"
    age: 6

业务类定义业务功能bean,在引导类通常使用@Import导入,解耦强制加载bean

使用@EnableConfigurationProperties注解设定使用属性类时加载bean

@Data
//当加载CartoonCatAndMouse类时将CartoonProperties类加载成bean,不用不加载,解耦合
@EnableConfigurationProperties(CartoonProperties.class)
public class CartoonCatAndMouse {
    private Cat cat;
    private Mouse mouse;
    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()+"打起来了");
    }
}

将业务功能bean运行需要的资源抽取长独立的属性类,设置读取配置文件的信息

@Data
//类与配置文件绑定
@ConfigurationProperties(prefix = "cartoon")
public class CartoonProperties {
    private Cat cat;
    private Mouse mouse;
}

测试:

@SpringBootApplication
//当运行时将CartoonCatAndMouse类加载成bean,不允许不加载
@Import(CartoonCatAndMouse.class)
public class Demo15SpringbootBeanpropertiesApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Demo15SpringbootBeanpropertiesApplication.class, args);
        CartoonCatAndMouse bean = ctx.getBean(CartoonCatAndMouse.class);
        bean.play();
    }
}

总结:

  1. 业务bean的属性可以为其设定默认值
  2. 当需要设置时通过配置文件传递属性
  3. 业务bean应尽量避免设置强制加载,而是根据需要导入后加载,降低spring容器管理bean的强度

到此这篇关于SpringBoot bean依赖属性配置详细介绍的文章就介绍到这了,更多相关SpringBoot bean依赖属性配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis映射文件之常用标签及特殊字符的处理方法

    Mybatis映射文件之常用标签及特殊字符的处理方法

    这篇文章主要介绍了Mybatis映射文件常用标签及特殊字符的处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • SpringAnimation 实现菜单从顶部弹出从底部消失动画效果

    SpringAnimation 实现菜单从顶部弹出从底部消失动画效果

    最近做项目遇到这样一个需求,要求实现一种菜单,菜单从顶部弹入,然后从底部消失,顶部弹入时,有一个上下抖动的过程,底部消失时,先向上滑动,然后再向下滑动消失。下面给大家带来了实现代码,感兴趣的朋友一起看看吧
    2018-05-05
  • SpringBoot中整合消息服务组件的方法

    SpringBoot中整合消息服务组件的方法

    本文介绍了消息服务组件的基本概念,以及如何在SpringBoot中整合常见的消息服务组件,如ActiveMQ、RabbitMQ和Kafka,我们探讨整合消息服务组件在实际应用场景中的优势,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • SpringCloud启动失败问题汇总

    SpringCloud启动失败问题汇总

    这篇文章主要介绍了SpringCloud启动失败问题汇总,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 老生常谈Java网络编程TCP通信(必看篇)

    老生常谈Java网络编程TCP通信(必看篇)

    下面小编就为大家带来一篇老生常谈Java网络编程TCP通信(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java的Spring框架中AOP项目的一般配置和部署教程

    Java的Spring框架中AOP项目的一般配置和部署教程

    这篇文章主要介绍了Java的Spring框架中AOP项目的一般配置和部署教程,AOP面向方面编程的项目部署结构都比较类似,因而也被看作是Spring的一种设计模式使用,需要的朋友可以参考下
    2016-04-04
  • Spring扩展BeanFactoryPostProcessor使用技巧详解

    Spring扩展BeanFactoryPostProcessor使用技巧详解

    这篇文章主要为大家介绍了Spring扩展BeanFactoryPostProcessor使用技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • java基于控制台的学生学籍管理系统

    java基于控制台的学生学籍管理系统

    这篇文章主要为大家详细介绍了java基于控制台的学生学籍管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • IDEA添加Java类注释模版的方法

    IDEA添加Java类注释模版的方法

    本篇文章主要介绍了IDEA添加Java类注释模版的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • SpringCloud解决Feign异步回调问题(SpringBoot+Async+Future实现)

    SpringCloud解决Feign异步回调问题(SpringBoot+Async+Future实现)

    这篇文章主要介绍了SpringCloud解决Feign异步回调问题(SpringBoot+Async+Future实现),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论