В Springboot вы можете использовать аннотацию @Bean для динамического создания bean-компонентов в классе конфигурации, например:
@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
Помимо использования аннотации @Bean для создания bean-компонентов, вы также можете использовать аннотацию @Component для динамического создания bean-компонентов, например:
@Component
public class MyComponent {
@Autowired
private MyService myService;
// ...
}
Компоненты в других классах конфигурации можно динамически импортировать с помощью аннотации @Import, например:
@Configuration
@Import(MyConfig.class)
public class AppConfig {
@Autowired
private MyBean myBean;
// ...
}
Свойства конфигурации можно вводить динамически с помощью аннотации @ConfigurationProperties, например:
@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private String name;
private int age;
// ...
}
Используйте аннотацию @Value для динамического ввода значений, например:
@Component
public class MyComponent {
@Value("${my.property}")
private String myProperty;
// ...
}
Используйте аннотацию @Autowired для динамического внедрения других компонентов, например:
@Component
public class MyComponent {
@Autowired
private MyService myService;
// ...
}
Внедренные bean-компоненты можно динамически указать с помощью аннотации @Qualifier, например:
@Component
public class MyComponent {
@Autowired
@Qualifier("myBean")
private MyBean myBean;
// ...
}
Компоненты можно загружать динамически отложенно с помощью аннотации @Lazy, например:
@Component
@Lazy
public class MyComponent {
@Autowired
private MyService myService;
// ...
}
Компоненты можно создавать динамически с помощью FactoryBean, например:
public class MyFactoryBean implements FactoryBean<MyBean> {
@Override
public MyBean getObject() throws Exception {
return new MyBean();
}
@Override
public Class<?> getObjectType() {
return MyBean.class;
}
}
Компоненты можно создавать динамически с помощью аннотации @Conditional, например:
@Configuration
public class MyConfig {
@Bean
@Conditional(MyCondition.class)
public MyBean myBean() {
return new MyBean();
}
}