【问题标题】:Initializing ApplicationContext in Servlet在 Servlet 中初始化 ApplicationContext
【发布时间】:2017-07-18 23:21:14
【问题描述】:

我正在使用 Spring、Hibernate、JSP 和 Servlet 构建应用程序。对于每个表单操作方法,我将值传递给 Servlet,并且我声明 ApplicationContext 以在所有 servlet 中加载 spring.xml。有什么方法可以在 servlet 中的一个位置删除 ApplicationContext 并在那里获取所有 bean...

我声明

 ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
 Student student = (Student) ac.getBean("student");

我在所有 servlet 中都声明了这一点。是否有任何中心位置可以声明这一点并在 servlet 中获取 bean。

【问题讨论】:

  • 通常在 Spring 应用程序中只有 Spring DispatcherServlet。处理 http 请求的实际代码在(spring 管理的)控制器中。向这些中注入依赖项。你应该重新考虑你的设计。你想做的不是“像弹簧一样”。 Have a look into the docs

标签: spring servlets applicationcontext


【解决方案1】:

让 Spring 在您需要的任何地方自动装配您的 bean。这是做事的首选方式。如果你对spring中的@Autowired注解不熟悉,就这样做吧-

  1. 将此添加到您的 something-servlet.xml

    <context:component-scan base-package="you_base_package" />
    <mvc:annotation-driven />
    

    your_base_package 是包含您的学生的基本包 类和其他要自动装配(或实例化)的类。

  2. 使用 @Component 注释您的学生班级和其他班级。

  3. 在需要的地方使用它来获取 Student 和其他人的实例。 @Autowired Student student;

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多