Tap*_*ena 1 java spring struts2
我有一个名为DataSource的servive接口和多个实现,如XMLDataSource,DataBaseDataSource等.
我想基于一些用户交互向我的Struts2 Action注入(Spring)适当的实现,比如用户点击XML然后我需要使用XML实现.Spring已被用于DI框架.
@Autowired
private DataSource dataSource;
Run Code Online (Sandbox Code Playgroud)
请建议实现这一目标的最佳方法.
MPa*_*esi 13
如果需要在运行时根据用户交互选择实现,则必须自动装配DataSource接口的所有可能实现.
当您自动装配List所需的接口时,Spring将使用每个实现的实例自动填充列表.
@Autowired
private List<DataSource> dataSources;
Run Code Online (Sandbox Code Playgroud)
由您决定,然后根据用户交互选择正确的界面.
如果需要根据bean名称进行区分,还可以选择自动装配在bean名称上编制索引的DataSource对象的字典.
@Autowired
private Map<String, DataSource> dataSourceIndex;
Run Code Online (Sandbox Code Playgroud)
这可以从Spring的2.5版本获得,你可以在这里找到autowire文档
使用@Autowired按类型自动装配的注释时,您应该切换到按名称自动装配,这可以使用@Qualifier注释完成
@Autowired
@Qualifier("yourDataSource")
private DataSource dataSource;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8347 次 |
| 最近记录: |