-1

我正在尝试使用 struts2 和 spring 实现一个示例项目。我遵循了这个例子,它工作得很好。但在每一个动作中,我都需要像下面这样的硬编码 spring.xml 配置文件。我怎样才能摆脱以下陈述?

ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {“SpringBeans.xml”});

Customer cust = (Customer)context.getBean(“CustomerBean”);
System.out.println(cust);

我想写类似下面的东西

@Autowired
Customer customer;

上述声明是否有效?如果是,spring 将如何查找 xml 配置文件?春天会在类路径中检查吗?

4

1 回答 1

1

正如@engineer-dollery 所暗示的那样, Spring 应该只有一个引导程序ApplicationContext。您可以自己实例化它(如您的示例中所示),但对于基于 servlet 的 Web 应用程序执行此操作的典型方法是在 web.xml 中添加类似以下内容:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:SpringBeans.xml</param-value>
</context-param>

然后,如果要使用自动装配,可以在SpringBeans.xml文件中定义以下内容:

...
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
...
<context:component-scan base-package="package.containing.your.beans" />

并确保使用@Autowired适当的构造型注释具有字段的类,例如@Componentor @Service(或@Controller使用 Spring MVC 而不是 Struts)。

但是请注意,依赖项只能通过自动装配注入,如果它们本身是:

  1. 在您的 xml 配置中定义为 bean 或
  2. 用构造型注释并在您告诉 Spring 扫描组件的包中

否则,请查看这些以获取集成 Spring 和 Struts 的教程/示例:

于 2013-06-08T05:34:42.420 回答