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にならない場合はこのようなメソッドはありませんでした。
ご存知の方、いましたら回答頂きたく思います。
あなたの回答
tips
プレビュー