- 使用@Bean注解动态创建Bean
在Springboot中,可以使用@Bean注解在配置类中动态创建Bean,例如:
代码语言:txt复制@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
- 使用@Component注解动态创建Bean
除了使用@Bean注解创建Bean外,还可以使用@Component注解动态创建Bean,例如:
代码语言:txt复制@Component
public class MyComponent {
@Autowired
private MyService myService;
// ...
}
- 使用@Import注解动态导入Bean
使用@Import注解可以动态导入其他配置类中的Bean,例如:
代码语言:txt复制@Configuration
@Import(MyConfig.class)
public class AppConfig {
@Autowired
private MyBean myBean;
// ...
}
- 使用@ConfigurationProperties注解动态注入配置属性
使用@ConfigurationProperties注解可以动态注入配置属性,例如:
代码语言:txt复制@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private String name;
private int age;
// ...
}
- 使用@Value注解动态注入值
使用@Value注解可以动态注入值,例如:
代码语言:txt复制@Component
public class MyComponent {
@Value("${my.property}")
private String myProperty;
// ...
}
- 使用@Autowired注解动态注入Bean
使用@Autowired注解可以动态注入其他Bean,例如:
代码语言:txt复制@Component
public class MyComponent {
@Autowired
private MyService myService;
// ...
}
- 使用@Qualifier注解动态指定Bean
使用@Qualifier注解可以动态指定注入的Bean,例如:
代码语言:txt复制@Component
public class MyComponent {
@Autowired
@Qualifier("myBean")
private MyBean myBean;
// ...
}
- 使用@Lazy注解动态延迟加载Bean
使用@Lazy注解可以动态延迟加载Bean,例如:
代码语言:txt复制@Component
@Lazy
public class MyComponent {
@Autowired
private MyService myService;
// ...
}
- 使用FactoryBean动态创建Bean
使用FactoryBean可以动态创建Bean,例如:
代码语言:txt复制public class MyFactoryBean implements FactoryBean<MyBean> {
@Override
public MyBean getObject() throws Exception {
return new MyBean();
}
@Override
public Class<?> getObjectType() {
return MyBean.class;
}
}
- 使用@Conditional注解动态创建Bean
使用@Conditional注解可以动态创建Bean,例如:
代码语言:txt复制@Configuration
public class MyConfig {
@Bean
@Conditional(MyCondition.class)
public MyBean myBean() {
return new MyBean();
}
}