首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Configuration中的逻辑

@Configuration中的逻辑
EN

Stack Overflow用户
提问于 2019-09-11 22:38:25
回答 2查看 155关注 0票数 1

你认为在标记为@Configuration的类中使用逻辑是允许的吗,因为这个逻辑只在应用程序启动时应用一次。例如:我们想要配置缓存,为此,我们需要在标记为@Configuration的类中进行几次注入,编写一些方法来创建缓存并添加@PostConstract。

不是在@Service或@Component中,而是在@Configuration中编写这样的东西有多合法?如果是坏的,那为什么呢?

代码语言:javascript
复制
@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
     */
}

}

EN

回答 2

Stack Overflow用户

发布于 2019-09-11 22:51:21

尽量使您的@Configuration bean保持清晰。配置通常用于定义一组其他@Bean,并且拥有“几个注入”可能会使哪些@Bean需要哪些注入变得不清楚。

有一个通过方法参数注入依赖项的选项。我认为这永远是一个更好的选择。

代码语言:javascript
复制
@Bean
public Caches getCaches(DependencyA a, DependencyB b) { ... }

DependencyA不会出现在整个配置中,只出现在实际需要的非常有限的范围内。

不是在@Service或@Component中,而是在@Configuration中编写这样的东西是合法的吗?

我看不出有什么问题。尝试使用我上面提到的方法。如果您的逻辑不适合一个方法,或者指定为参数的依赖项不够,那么您可能做错了什么。

更新:

@PostConstruct不是一个好主意。这是一个回调,说明configuration类已经创建。它是类中定义的所有bean的通用部分。它并不意味着要开始构造一个任意选择的bean。

票数 0
EN

Stack Overflow用户

发布于 2019-09-11 23:00:29

这可能会变得非常主观。然而,在我看来,配置应该是直截了当的,并且是无条件的。控制动态类型以及要注入的内容的逻辑应该导出到Factory bean。下面是一个https://howtodoinjava.com/spring-core/how-to-create-beans-using-spring-factorybean/amp/示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57891570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档