正如@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
适当的构造型注释具有字段的类,例如@Component
or @Service
(或@Controller
使用 Spring MVC 而不是 Struts)。
但是请注意,依赖项只能通过自动装配注入,如果它们本身是:
- 在您的 xml 配置中定义为 bean 或
- 用构造型注释并在您告诉 Spring 扫描组件的包中
否则,请查看这些以获取集成 Spring 和 Struts 的教程/示例: