将独立的 Spring 应用程序转换或集成到 Spring MVC 应用程序。
我有一个具有以下结构的 Spring MVC 应用程序
myApp
|- META-INF
|- WEB-INF
|-classes
|-com
|-controllers
|-service
|-lib
|-UserLibrary.jar
|-META-INF
|-applicationContext.xml
|-dbre.xml
|-ehcache.xml
|-DataSource.xml
|-Jpa.xml
|-SpringDataJpa.xml
|-applicationContext.xml
|-myApp-servlet.xml
Spring MVC 按照通常的过程加载。即控制器用 注释@Controllers
,服务用@Service
等注释。
曾经是一个独立的userLibrary.jar
Spring 应用程序,具有自己的 Spring/JPA 配置。它进行了转换,以便可以集成到 MVC 应用程序中。它有自己的配置文件(总共大约 7 个)、自己的 Hibernate/JPA 实体管理器等。
为了在 Spring MVC 应用程序上使用它,我对服务类进行了轻微修改,以便在 WebApplicationContext 完成初始化时加载 UserLibrary 应用程序的应用程序上下文。
public class MyAppService implements
ApplicationListener<ContextRefreshedEvent> {
protected UserLibraryService service;
--
-- several service methods etc
--
System.getProperty("username", "userA");
System.getProperty("password", "userB");
@Override
public void onApplicationEvent(ContextRefreshedEvent arg0) {
ApplicationContext context =
new ClassPathXmlApplicationContext("META-INF/userLibrary.xml");
service = context.getBean(UserLibrary.class);
}
}
上述方法产生两个容器,即WebApplicationContext
用于 MVC 应用程序的容器和ApplicationContext
用于 UserLibrary 应用程序的容器。我怀疑上述方法不是正确/最好的方法,所以我正在寻求关于什么是最好方法的建议。例如,我可以使用一个容器而不是两个容器吗?
更新:
这是我尝试过的。我从MVC 应用程序中导入了UserLibrary
应用程序的配置文件。applicationContext.xml
<import resource="classpath:META-INF/applicationContext.xml" />
然后我UserLibraryBean
在 MVC 应用程序的applicationContext.xml
文件中添加了(包含导入语句的同一文件。
<bean class="com.service.UserLibraryService"/>
几个问题:
- 更新后的方法是只使用一个容器还是仍然使用两个容器?
UserLibraryService 在其初始化期间读取以下属性
System.getProperty("用户名"); System.getProperty("密码");
onApplicationEvent
在我的原始示例中,我在方法中设置了上述值,并且UserLibray
可以读取它们。
这些似乎不再设置,所以我从UserLibrary
应用程序中收到一个错误,即属性尚未设置。我还尝试在 Service 类的构造函数中设置它们,但仍未设置它们。
有没有办法将系统属性设置为 xml 文件中 bean 定义的一部分?我在哪里可以设置属性以便服务对象可以使用它们?
谢谢