プログラムを作成していて、以下の2つのソースコードのような
Resourceアノテーションを使用した場合と、インスタンス生成をした場合とで違いがあるのか気になり
今回質問させていただきました。
java
1@Service 2public class ServiceA{ 3 public void test1(){ 4 // 何らかの処理 5 } 6}
java
1@Service 2public class ServiceB{ 3 @Resource 4 private ServiceA serviceA; 5 6 public function test2(){ 7 8 serviceA.test1(); //① @Resourceを利用したメソッドへのアクセス 9 10 ServiceA sA = new ServiceA(); 11 sA.test1(); //② インスタンス生成後メソッドへのアクセス 12 13 } 14}
ServiceBにある注釈①と注釈②の処理は、結局同じ結果になると認識しており
同じ結果になるのであれば
「2つの方法を使いわける明確な基準というのはあるのだろうか(この場合は、@Resourceを使った方がいい等)」
とふと思いました。
そこで、@Resourceを使用したメソッドへのアクセス、インスタンス生成後のメソッドへのアクセス
それぞれにメリット・デメリットがあるのではと思い調査してみましたが
ピンとくるような答えを得られなかったので、今回質問させていただきました。。
調査を踏まえた私なりの見解では
- @Resourceを使用したケース
区分 | メリット | デメリット |
---|---|---|
@Resourceを使用したケース | newをする手間が省ける | @Resourceが定義されているクラスの内容がメモリにずっと展開されてしまう |
newからインスタンスを生成したケース | newをすることで、メモリ上にクラスの内容を展開するので不必要な時にクラスの内容をメモリ上に展開しなくてすむ | newしてインスタンスを生成しないとメソッドが使えない |
このようなメリット・デメリットがあると考えてますが
「全然違う」や「こういうメリット・デメリットがある」等のアドバイスをいただけると幸いです。
色々と勉強不足で恐縮ですが、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー