Springboot加载动态Bean的10种方式

简介: Springboot加载动态Bean的10种方式
  1. 使用@Bean注解动态创建Bean

在Springboot中,可以使用@Bean注解在配置类中动态创建Bean,例如:

@Configuration
public class MyConfig {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }

}
  1. 使用@Component注解动态创建Bean

除了使用@Bean注解创建Bean外,还可以使用@Component注解动态创建Bean,例如:

@Component
public class MyComponent {

    @Autowired
    private MyService myService;

    // ...

}
  1. 使用@Import注解动态导入Bean

使用@Import注解可以动态导入其他配置类中的Bean,例如:

@Configuration
@Import(MyConfig.class)
public class AppConfig {

    @Autowired
    private MyBean myBean;

    // ...

}
  1. 使用@ConfigurationProperties注解动态注入配置属性

使用@ConfigurationProperties注解可以动态注入配置属性,例如:

@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {

    private String name;

    private int age;

    // ...

}
  1. 使用@Value注解动态注入值

使用@Value注解可以动态注入值,例如:

@Component
public class MyComponent {

    @Value("${my.property}")
    private String myProperty;

    // ...

}
  1. 使用@Autowired注解动态注入Bean

使用@Autowired注解可以动态注入其他Bean,例如:

@Component
public class MyComponent {

    @Autowired
    private MyService myService;

    // ...

}
  1. 使用@Qualifier注解动态指定Bean

使用@Qualifier注解可以动态指定注入的Bean,例如:

@Component
public class MyComponent {

    @Autowired
    @Qualifier("myBean")
    private MyBean myBean;

    // ...

}
  1. 使用@Lazy注解动态延迟加载Bean

使用@Lazy注解可以动态延迟加载Bean,例如:

@Component
@Lazy
public class MyComponent {

    @Autowired
    private MyService myService;

    // ...

}
  1. 使用FactoryBean动态创建Bean

使用FactoryBean可以动态创建Bean,例如:

public class MyFactoryBean implements FactoryBean<MyBean> {

    @Override
    public MyBean getObject() throws Exception {
        return new MyBean();
    }

    @Override
    public Class<?> getObjectType() {
        return MyBean.class;
    }

}
  1. 使用@Conditional注解动态创建Bean

使用@Conditional注解可以动态创建Bean,例如:

@Configuration
public class MyConfig {

    @Bean
    @Conditional(MyCondition.class)
    public MyBean myBean() {
        return new MyBean();
    }

}
目录
相关文章
|
14天前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
26天前
|
Java Spring 容器
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
这篇文章讨论了在Spring Boot 3.2.1版本中,同名同类型的bean和@Service注解类之间冲突的问题得到了解决,之前版本中同名bean会相互覆盖,但不会在启动时报错,而在配置文件中设置`spring.main.allow-bean-definition-overriding=true`可以解决这个问题。
60 0
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
|
2月前
|
Java Spring
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
本文介绍了如何在Spring Boot项目中集成Swagger 2.x和3.0版本,并提供了解决Swagger在Spring Boot中启动失败问题“Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerEx”的方法,包括配置yml文件和Spring Boot版本的降级。
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
|
21天前
|
Java Shell C++
Springboot加载注入bean的方式
本文详细介绍了Spring Boot中Bean的装配方法。首先讲解了使用@Component、@Service、@Controller、@Repository等注解声明Bean的方式,并解释了这些注解之间的关系及各自适用的层次。接着介绍了通过@Configuration和@Bean注解定义Bean的方法,展示了其灵活性和定制能力。最后讨论了@Component与@Bean的区别,并提供了在Spring Boot应用中装配依赖包中Bean的三种方法:使用@ComponentScan注解扫描指定包、使用@Import注解导入特定Bean以及在spring.factories文件中配置Bean。
|
2月前
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
|
3月前
|
Java Spring
Spring boot +Thymeleaf 本地图片加载失败(图片路径)的问题及解决方法
这篇文章详细讲解了在Spring Boot应用程序中本地图片无法加载的问题原因,并提供了两个示例来说明如何通过使用正确的相对路径或Thymeleaf语法来解决图片路径问题。
|
4月前
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
96 11
|
3月前
|
前端开发 JavaScript Java
Spring boot 本地图片不能加载(图片路径)的问题及解决方法
这篇文章讨论了Spring Boot应用程序中本地图片无法加载的问题,通常由图片路径不正确引起,并提供了使用正确的相对路径和Thymeleaf语法来解决这一问题的两种方法。
|
3月前
|
Java 测试技术 Spring
Java SpringBoot 加载 yml 配置文件中字典项
Java SpringBoot 加载 yml 配置文件中字典项
38 0
|
3月前
|
Java Spring 容器
Java SpringBoot 中,动态执行 bean 对象中的方法
Java SpringBoot 中,动态执行 bean 对象中的方法
37 0