你认为在标记为@Configuration的类中使用逻辑是允许的吗,因为这个逻辑只在应用程序启动时应用一次。例如:我们想要配置缓存,为此,我们需要在标记为@Configuration的类中进行几次注入,编写一些方法来创建缓存并添加@PostConstract。
不是在@Service或@Component中,而是在@Configuration中编写这样的东西有多合法?如果是坏的,那为什么呢?
@Configuration
public class SomeClass {
@Resource
private SomeCacheManager someCacheManager;
@Resource
private SomeCacheEvictor someCacheEvictor;
@PostConstruct
public void init(){
createCache("Some cache");
createCache("Other");
createCache("More");
...
}
public void createCache(String cacheName){
/*
Some code to create cache
*/
}}
发布于 2019-09-11 22:51:21
尽量使您的@Configuration bean保持清晰。配置通常用于定义一组其他@Bean,并且拥有“几个注入”可能会使哪些@Bean需要哪些注入变得不清楚。
有一个通过方法参数注入依赖项的选项。我认为这永远是一个更好的选择。
@Bean
public Caches getCaches(DependencyA a, DependencyB b) { ... }DependencyA不会出现在整个配置中,只出现在实际需要的非常有限的范围内。
不是在@Service或@Component中,而是在@Configuration中编写这样的东西是合法的吗?
我看不出有什么问题。尝试使用我上面提到的方法。如果您的逻辑不适合一个方法,或者指定为参数的依赖项不够,那么您可能做错了什么。
更新:
@PostConstruct不是一个好主意。这是一个回调,说明configuration类已经创建。它是类中定义的所有bean的通用部分。它并不意味着要开始构造一个任意选择的bean。
发布于 2019-09-11 23:00:29
这可能会变得非常主观。然而,在我看来,配置应该是直截了当的,并且是无条件的。控制动态类型以及要注入的内容的逻辑应该导出到Factory bean。下面是一个https://howtodoinjava.com/spring-core/how-to-create-beans-using-spring-factorybean/amp/示例
https://stackoverflow.com/questions/57891570
复制相似问题