質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
DI (Dependence Injection)

DI (Dependence Injection)は、「依存性の注入」という概念を指します。オブジェクト間で依存性のあるコードを外部の設定ファイルから注入するソフトウェアパターン設計思想です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

369閲覧

EclipseからはDIできるのにwarにすると出来ない

simishu

総合スコア8

DI (Dependence Injection)

DI (Dependence Injection)は、「依存性の注入」という概念を指します。オブジェクト間で依存性のあるコードを外部の設定ファイルから注入するソフトウェアパターン設計思想です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2017/10/20 12:25

編集2022/01/12 10:55

Spring Bootを使用して開発をしているのですが、Eclipseから以下ソースを実行すると、@Autowiredのインスタンスを使用できるのですが、Mavenビルドして、warを作成すると、@AutowiredのインスタンスがNullになります。

以下ソース1のgrantlogic.getUserInfo(user)の箇所になります。
事前に中身を確認しても、確かにnullになっています。
ソース1の対象行までは確かに動いています。

【対象ソース(不要と思われるところは削除)】
=====ソース1
@Aspect
@Component
public class ActionLogInterceptor {
@Autowired
private grantServiceLogic grantlogic;

/** * Beforeアノテーションの処理 * Actionパッケージ内の処理開始前に実行 */ @Before("execution(* jp.co.xxxx.actions..*.*(..)) && !within(ActionLogInterceptor)") public void invokeBefore(JoinPoint joinPoint) {

         ※この位置でエラーが発生する
User Entity userEntity = grantlogic.getUserInfo(user);

}
}

=====ソース2
@Service
public class grantServiceLogic {
@Autowired
private grantServiceDBControl dbControl;
/**
* ログインユーザ情報取得
* @param loginId
* @return
*/
public UserEntity getUserInfo(String loginId) {
return dbControl.getUserInfo(loginId);
}
}

インターネットで見て、ApplicationContext.xmlを作成し、
以下を記載しましたが、「aop:aspectj-autoproxy」の箇所がエラーになります。

<aop:aspectj-autoproxy proxy-target-class="true" />

またCompnentScanやEnableAspectJAutoProxyも記載しましたがNoSuchMethodエラーが表示されます。

気になっているのはビルド時に以下warningが表示されています。

bad version number found in C:\Users\XXXXXX.m2\repository\org\aspectj\aspectjrt\1.8.9\aspectjrt-1.8.9.jar expected 1.8.7 found 1.8.9

【追加】
・エラーはNullpointerExceptionのみです。過去の質問にあったような他のExceptionはありません。
・@Serviceを@Componentにしても変わりません。
・aspectjtoolsはEclipse上で動かすときは1.8.9のみですが、Mavenビルドすると1.8.7も増えます。ただwarファイルの中には1.8.9のみです。
・ビルド時に以下Warningが出ています。
No sources found skipping aspectJ compile
・使用している各バージョンは以下になります。
java 1.8
tomcat 8.0.47
spring boot 1.4.4.(スタータのバージョン)
・classファイルをでコンパイルした結果、Nullになる場合はaspectOfメソッドや hasAspectメソッドがありました。
Nullにならない場合はこのようなメソッドはありませんでした。

ご存知の方、いましたら回答頂きたく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/23 11:24

日本相互証券かしら?業務ソースコードはもう少し慎重にあつかおう
simishu

2017/10/23 22:38

ご助言ありがとうございます。
kuniku

2017/10/24 01:08 編集

回答ではありませんが、まだ確認されていないのであれば以下を参考に。 - Spring boot のドキュメント -- 85.1 Create a deployable war file https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file you update your application’s main class to extend SpringBootServletInitializer -- 66.2 Packaging executable jar and war files https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging To build a war file that is both executable and deployable into an external container you need to mark the embedded container dependencies as “provided”, e.g: - Qiita Spring Boot 使い方メモ >> war で出力する https://qiita.com/opengl-8080/items/05d9490d6f0544e2351a#war-%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B
simishu

2017/10/24 01:55

確認させて頂きます。ありがとうございます。
simishu

2017/10/24 04:10

確認しましたが、warファイルのデプロイ、実行は出来ます。@aspectアノテーションをつけたクラスの中で@autowiredをつけたインスタンスがデプロイ環境だとnullになってしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問