我想在注释模式下使用Spring
自动装配一组bean。我尝试过类似下面的内容......
@Configuration
@ComponentScan(basePackages = "mypkg",
includeFilters = @Filter(type = FilterType.REGEX, pattern = {"regex1", "regex2"}),
excludeFilters = @Filter(type = FilterType.REGEX, pattern = "regex3"))
public class BeanCollector {
@Autowired
private List<MyBean> myBeans;
@Bean(name = "beans")
public List<MyBean> getMyBeans() {
return myBeans;
}
}
此代码运行良好,但问题是在我的应用程序的现实世界中。 regexes
是在运行时生成的,所以我不能将它们硬编码为上面的代码。我使用了一个带有静态方法的类,返回一个像这样的String数组......
includeFilters = @Filter(type = FilterType.REGEX, pattern = Regexes.getIncludeRegexes())
但它带来了编译错误。我认为它应该有一个解决方案,但尽管有一个很深的谷歌搜索我无法找到任何。
有什么建议吗?
答案 0 :(得分:1)
如果我理解正确,您需要动态选择一组与MyBean
类/接口匹配的可用bean。最好的方法是在上面注入Collection<MyBean>
,然后迭代集合,根据您的标准进行选择。 Groovy闭包,Google Guava或Java 8 lambdas可以使编写过程更简单。