2016-06-17 6 views
2

私のspring mvcアプリケーションで、メソッドへの複数の呼び出しを避けるためにコードをリファクタリングしようとしています。複数の呼び出しを避け、パラメータとして渡さない値の格納状態

@RestController 
Class A{ 

@Autowired 
Service1 service1 

@Autowired 
Service2 service2 

@RequestMapping(value = "/****/***", method = RequestMethod.GET) 
aMethod(){ 

    service1.service1Method(a,b) 

    service2.service2Method1(a,b) 

    service2.service2Method2(a,b) 

} 

@Component 
class Service1{ 

    service1Method(a,b) 
    { 
     String someValue = util.utilMethod(); 
    } 

} 
@Component 
class Service2{ 

    service2Method1(a,b) 
    { 
     String someValue = util.utilMethod(); 
    } 

    service2Method2(a,b) 
    { 
     String someValue = util.utilMethod(); 
    } 
} 
@Component 
class Util 
{ 
    String utilMethod() 
    { 
     return "something" 
    } 
} 

utilMethod()はvalue.Hereは複数の呼び出しを避けるためにしようと1で処理することができます取得するには、3つの時間を呼び出します。

コントローラでutillメソッドを呼び出し、その値を3番目のパラメータとして渡すことができます。これと同じです。

@Autowired 
Service1 service1 

@Autowired 
Service2 service2 

@Request 
aMethod(){ 

    String someValue = util.utilMethod(); 

    service1.service1Method(a,b,someValue) 

    service2.service2Method1(a,b,someValue) 

    service2.service2Method2(a,b,someValue) 

} 

しかし、このようにしたくない場合は、コードを変更する必要があります。 (要求ではなくセッションの)コントローラに値を格納する方法はありますか?service1クラスとservice2クラスを取得できますか?

答えて

0

ホープこれはclass.But希望があるべきサービスに

@RestController 
Class A{ 

@Autowired 
Service1 service1 

@Autowired 
Service2 service2 

@RequestMapping(value = "/****/***", method = RequestMethod.GET) 
aMethod(){ 

    String utilValue = util.utilMethod(); 
    service1.setUtilValue(utilValue); 

    service1.service1Method(a,b) 

    service2.service2Method1(a,b) 

    service2.service2Method2(a,b) 

} 

    @Component 
    class Service1{ 

    String utilValue;//setter and getter 

    service1Method(a,b) 
    { 
     //String someValue = util.utilMethod(); 
     String someValue = this.getUtilValue(); 
    } 

によって処理することができ、より良い方法をit.By追加メンバ変数(セッター/ゲッター)を行うには良い方法です。
関連する問題