Spring @autowired返回null

时间:2012-05-08 15:33:18

标签: java spring autowired

这个特定类的成员私有字段(注释为@autowired)位于服务JAR中,当我试图在我的代码中获取该类的实例时,@ autowired成员总是返回null。我在我的项目的context.xml中有下面的组件扫描语句,它试图在JAR中查找base-package,但是仍然会出现空值被注入到带注释的成员中。 JAR内部还有一个context.xml,它具有与下面相同的组件扫描条目。 JAR源代码现在无法更改,我有什么遗漏吗?

<!-- local WEB-INF/spring-context/spring-application-context.xml -->
<context:annotation-config /> 
<context:component-scan base-package="blah.blah" />

//this code within my project
//wjc.getMethod() dereferencing comes back null
 public class A{
    WithinJARInterface wjc = new WithinJARInterfaceImpl()
    List someObject = wjc.getMethod()
 }

 //this code interface within JAR
 public interface WithinJARInterface{
    public List getMethod() throws Exception(); 
 }

 //this code within JAR
 public class WithinJARInterfaceImpl implements WithinJARInterface{

    //below member always comes back NULL
    @Autowired
    private JARService jService;

    public List getMethod(){.....}

 }

 public interface JARService{
    public List method1();
 }

  @Service("JARService") 
   public class JARServiceImpl implments JARService {
     public List method1(){ }
  }

2 个答案:

答案 0 :(得分:7)

您正在自己构建WithinJARInterfaceImpl(通过调用new),因此它不受spring管理,因此不会注入值。

答案 1 :(得分:0)

您是否尝试用@Resource替换@Autowired?我认为@Autowired按类型连接,而@Resource按bean名称注入。