行っていること
https://www.amazon.co.jp/gp/product/B07H6XLXD7/ref=ppx_yo_dt_b_d_asin_title_o00?ie=UTF8&psc=1
上記URLの本の7章のSpring AOPについて実装を行っていました。
サンプルコードを記載して、Spring Bootを起動しましたが、エラーが出てしまいました。
エラー文
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectingArgumentResolverBeanPostProcessor' defined in class path resource [org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 70 execution(*com.example.demo.login.controller.LoginController.getLogin(..)) ^ org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.3.4.RELEASE.jar:2.3.4.RELEASE] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 70 execution(*com.example.demo.login.controller.LoginController.getLogin(..)) ^ Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 70 execution(*com.example.demo.login.controller.LoginController.getLogin(..)) ^
文字数の関係で抜粋しました。
該当コード
LogAspect.java
java
1package com.example.demo.login.aspect; 2 3import org.aspectj.lang.JoinPoint; 4import org.aspectj.lang.annotation.Aspect; 5import org.springframework.stereotype.Component; 6import org.aspectj.lang.annotation.Before; 7import org.aspectj.lang.annotation.After; 8 9@Aspect 10@Component 11public class LogAspect { 12 @Before("execution(*com.example.demo.login.controller.LoginController.getLogin(..))") 13 public void startLog(JoinPoint jp) { 14 System.out.println("メソッド開始:" + jp.getSignature()); 15 } 16 17 @After("execution(*com.example.demo.login.controller.LoginController.getLogin(..))") 18 public void endLog(JoinPoint jp) { 19 System.out.println("メソッド開始:" + jp.getSignature()); 20 } 21}
pom.xml
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency>
LoginController.java
java
1package com.example.demo.login.controller; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.web.bind.annotation.GetMapping; 5import org.springframework.ui.Model; 6import org.springframework.web.bind.annotation.PostMapping; 7 8@Controller 9public class LoginController { 10 @GetMapping("/login") 11 public String getLogin(Model model) { 12 return "login/login"; 13 } 14 15 @PostMapping("/login") 16 public String postLogin(Model model) { 17 return "login/login"; 18 } 19}
やってみたこと
1、ファイルディレクトリの構成が間違っていないかの確認。
→間違っていたので、修正。修正後にLogAspect.javaをコメントアウトし、spring bootを起動したら問題なく作動。
2.プロジェクトの更新
pom.xmlを修正したので、プロジェクトを更新して、リフレッシュしましたが、エラー発生。
maven 依存関係のディレクトリーにaspectjweaverとspring-aopがあったので、問題無いかと思われる。
java.lang.IllegalArgumentExceptionやorg.springframework.beans.factory.BeanCreationExceptionを調べてみましたが、解決できませんでした。
お分かりになる方がいらっしゃれば、ご教授頂きたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。