2017-01-29 10 views
0

静的クラスへのプロキシであるサービスをautowireしようとしています。春は協力しておらず、何が間違っているのかを示すものではありません。サービスまたはスロー例外をスローしないSpring

私は見ることができます:

方法は、 'org.springframework.beans.factory.BeanCreationException' 例外をスローしました。変数を評価しようとすると、デバッガでcom.domain.services.SessionService $$ EnhancerBySpringCGLIB $$ f94406f3.toString()

を評価できません。

私は私のコントローラのユーティリティクラスを持っている:

アプリケーションの起動時に
public class ControllerUtil { 

private static SessionService sessionService; 

public ControllerUtil(SessionService sessionService) { 
    this.sessionService = sessionService; 
} 

私は静的クラスにsessionServiceを追加しよう。セッションサービスはセッションスコープにありますので、ここでプロキシを追加しようとしています。

@Configuration 
public class BeanConfig { 

@Autowired 
SessionService sessionService; 

@PostConstruct 
private void initStaticClasses() { 
    /* 
    * Need to add proxy to controller utils 
    * */ 
    new ControllerUtil(sessionService); 
} 

最後に私のSessionServiceクラス:

@Service 
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
public class SessionService { 

@Autowired 
BusinessDAO businessDAO; 

Business business = businessDAO.getBusinessById("1"); 

public SessionService() { 
    System.out.println("New session service"); 
} 

私はただのdevの目的のためにビジネスにハードコードしようとしています。

春はどこかで失敗しているはずですが、ログに何も戻ってこないし、デバッグが本当に助けにはなりません。

誰でも私が間違ったことをアドバイスできますか?

ありがとう

+0

に以下を追加し、私も言及する必要があります...それはこのBeanを作成することができないので、春はSessionServiceコンストラクタを呼び出すことはありません。それでもログに「シングルトンBeanのキャッシュされたインスタンス 'SessionService'を返す」と表示されます – FMC

+0

そのサービスパッケージに '@ ComponentScan'がありますか? –

+0

@ HithamS.AlQadheebはい私はそれを試みました - それは仕事をしませんでした。コンポーネントスキャンを行わなくても、同じパッケージに他のサービスを正常に作成できます。 – FMC

答えて

0

Java設定を使用している場合、この行をWebアプリケーションの初期化プログラムに追加します。

servletContext.addListener(new RequestContextListener()); 

あなたは春のXML構成を使用している場合、web.xmlの

<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 
関連する問題