Spring 组件扫描似乎不起作用。我正在使用 Spring 3.1 和 tomcat 7.0。
这就是我的 applicationContext.xml 的样子:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.abc"/>
<bean id="myBean" class="com.efg.test.MyBean" />
</beans>
我有这样的课:
package com.abc.test
@Component
class Test {
@Autowired
private static MyBean myBean;
public static MyBean getMyBean() { return myBean; }
public static void setMyBean(MyBean bean) { myBean = bean; }
}
我曾预计测试将在 web 应用程序启动时由 Spring 初始化,并且 myBean 将自动注入,因此如果我调用测试的任何(静态)方法,我对 myBean 的引用不是空的。
但是,myBean 没有被注入并且始终为空(myBean 本身被初始化为单例,它只是没有被注入)。我还需要做什么才能使其正常工作?如果我将测试类添加到 applicationContext.xml 一切正常。我的猜测是 Test 只是没有被 Spring 初始化,因此没有连接。
更新: 我需要能够从静态上下文访问自动装配字段(此类的方法称为 JSP 函数),因此它必须是静态的。