2

@autowired アノテーションが付けられたこの特定のクラスのメンバー プライベート フィールドはサービス JAR 内にあり、コード内でクラスのインスタンスを取得しようとすると、@autowired メンバーは常に null として返されます。プロジェクトの context.xml 内に以下の component-scan ステートメントがあり、JAR 内の基本パッケージを検索しようとしていますが、注釈付きのメンバーに null が挿入されているようです。JAR の内部には、以下と同じ component-scan エントリを持つ 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(){ }
  }
4

2 に答える 2

7

WithinJARInterfaceImpl を自分で ( を呼び出してnew) 構築しているため、Spring によって管理されないため、値は注入されません。

于 2012-05-08T17:10:37.857 に答える
0

@Autowiredを@Resourceに置き換えてみましたか?@ResourceがBean名で注入しているのに対し、@Autowiredはタイプ別に配線していると思います。

于 2012-05-08T16:56:14.997 に答える