gpt4 book ai didi

java - 将独立的 Spring 应用程序转换或集成到 Spring MVC 应用程序

转载 作者:行者123 更新时间:2023-12-02 00:04:23 25 4
gpt4 key购买 nike

将独立的 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 按照通常的流程加载。即 Controller 用@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);
}
}

上述方法产生两个容器,即 MVC 应用程序的 WebApplicationContext 和 UserLibrary 应用程序的 ApplicationContext。我怀疑上述方法不是正确/最佳的方法,因此我正在寻求有关最佳方法的建议。例如,我可以使用单个容器而不是两个容器吗?

更新:

这是我尝试过的。我从 MVC 应用程序的 applicationContext.xml 导入了 UserLibrary 应用程序的配置文件。

<import resource="classpath:META-INF/applicationContext.xml" />

然后,我在 MVC 应用程序的 applicationContext.xml 文件中添加了 UserLibraryBean(与包含导入语句的文件相同。

<bean class="com.service.UserLibraryService"/>

几个问题:

  • 更新后的方法是仅使用一个容器还是仍使用两个容器?<​​/li>
  • UserLibraryService 在初始化期间读取以下属性

    System.getProperty("用户名");System.getProperty("密码");

在我原来的示例中,我在 onApplicationEvent 方法中设置了上述值,并且 UserLibray 可以读取它们。

这些似乎不再设置,因此我从 UserLibrary 应用程序收到一条错误,表明属性尚未设置。我还尝试在 Service 类的构造函数中设置它们,但它们仍然没有设置。

有没有办法将系统属性设置为 xml 文件中 bean 定义的一部分?我可以在哪里设置属性以便它们可供服务对象使用?

谢谢

最佳答案

您可以在 Web 应用程序的 web.xml 中的 context-param/contextConfigLocation 参数中指定多个配置 xml 文件

您可以在文件名上使用classpath:前缀从类路径加载它

关于java - 将独立的 Spring 应用程序转换或集成到 Spring MVC 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com