2016-07-29 39 views
0

我有两个包的Spring IoC接口和实现在不同的包

  • com.xxx.A包含一个界面 - >持久性。

  • com.xxx.B包含几个impls为持久性,

    • 等mySqlPersistence,hibernatePersistence。当我使用Spring IoC来切换不同的实现,我该怎么配置他们

我的问题是什么?顺便说一下我使用构造注入..

注意:目前,

  • 在包装“A”我有一个仓库使用持久性接口。
  • 包B中的实现
  • 由于包含“A”的包装操作域,包“B”取决于包“A”。

配置文件应该在哪里?

第一次接触Java的春天,为帮助....

+0

什么时候你想改变实现?在不同的部署?在应用程序启动?在飞行中? –

+0

@RobertMoskal应该​​在应用程序中开始选择不同的impl。 – Linqtoxml

回答

0

这可以通过在web.xml/configuration.xml文件中设置下面要做的感谢:

<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>hibernatePersistence</param-value> 
</context-param> 
<!--context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>mySqlPersistence</param-value> 
</context-param--> 

这是相关的组件冬眠可以注释为:

@ActiveProfiles("hibernatePersistence") 

而且同样可以有“mySqlPersistence”

组件

如果您需要mySqlPersistence为活动状态,请删除评论和评论“hibernatePersistence”一个。

+0

谢谢,当我切换不同的impl时,这个解决方案会改变源代码吗? – Linqtoxml

+0

你的实现应该是这样的,组件/类应该不同于hibernate和mysql(由@ActiveProfiles识别)。而当你想切换时,只需在XML文件中注释你不需要的配置文件即可。 – Manmeet