在applicationContext上执行SPeL

时间:2016-04-14 22:08:21

标签: spring spring-el

我正在尝试使用SPeL使用

从应用程序上下文中提取一些数据
@Value

准确地说,我想将此代码作为值

@Autowired
private ApplicationContext context;

Map<String, CrudRepository> repos = 
context.getBeansOfType(CrudRepository.class);

@Value("#{...})
private Map<String, CrudRepository> repos;

我可以调用一个像“systemProperties”这样的神奇变量吗?必须有!

1 个答案:

答案 0 :(得分:1)

这样的事情:

@Value("#{beanFactory.getBeansOfType(T(org.springframework.data.repository.CrudRepository))}")
private Map<String, MessageChannel> repos;

此处的SpEL基于BeanExpressionContext,因此其getBeanFactory()为我们提供了诀窍!

另一方面,@Value不需要Map<String, CrudRepository>。正常@Autowired的工作方式相同。