0

皆さん、こんにちは私がやろうとしているのは、@Value と @PostConstruct を使用して CustomDetail オブジェクトにいくつかのプロパティを事前に入力し、この事前入力されたオブジェクトをサービスで使用することですが、オブジェクトがサービス クラスに到着すると、すでに null です...

更新しました!!!!これは正しいコードです

@Service
public Class CustomDetail(){


 ProxyObject prx; 
 ...
 @Value("#{myProperties.proxy.address}")
 String propertyPrx;

 @PostConstruct
 private void setProperty(){
  prx= new ProxyObject(propertyPrx);
 }
 .....
 ....
}

これで、setProperty() メソッドは効果的に正しく機能します。デバッグ時に Tomcat を起動すると、propertyPrx が適切であり、オブジェクト prx が null ではないことがわかります...したがって、新しい ProxyObject(propertyPrx) は問題なく呼び出されます。この時点ですべて大丈夫。今、サービス部分に移動して使用しようとすると

public Class ServiceClient(){

 ....
 ...
 @Autowired
 CustomDetail cDetail;


 ....
 ...more code
  cDetail.someMethod(a,n,y);   //<---cDetail Object is null so I get a NullPointerException

}

なぜこれが起こっているのか、Tomcatが初めて起動したときにのみ@PostConstructが初期化される理由と、サービスクラスに注入しようとしたときに、初期化されなかった場合のように、すでにnullになっている理由を教えてください...私はあなたの助けに感謝しますSpringMVC 3.1 Tomcat を使用する

4

1 に答える 1

0

CustomDetail で @Component を使用してみてください。

<context:component-scan base-package=”your.package” />

于 2012-06-17T06:56:27.017 に答える