問題タブ [spring-aspects]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Spring リポジトリの AspectJ ジョインポイント
Repository.save メソッドへの呼び出しを傍受しようとしています。これは基本的にこことここで説明されています。唯一の問題は、単に機能しないことです。私は明らかに何かが欠けていますが、何時間も経った後、私は何を失っています。
Spring 4.1.6 と AspectJ 1.8.5 を使用しています。
コード:
私の構成クラスからの興味深い注釈:
ターゲット リポジトリ:
アスペクト:
ご覧のとおり、いくつかの異なるタイプの Pointcut を試しました。しかし、どれも機能しません。プロキシに関係する何かを見逃したのではないかと思います。アドバイス(しゃれを意図したもの)をいただければ幸いです。
java - Spring テストで呼び出されないアスペクト
私はSpring 4.16を使用しており、メソッドの引数を検証し、何か問題がある場合はValidationExceptionをスローするValidationAspectを持っています。これは、サーバーを実行してリクエストを送信するときに呼び出されますが、テストから来るときは呼び出されません:
アスペクト Bean のアスペクトを作成する構成ファイル
したがって、これはテストです。無効な softwareObject であるため、addSoftware メソッドに入る直前に ValidationException をスローする必要があります。
サービスを実行し、この無効なユーザーを投稿リクエストから追加すると、ValidationException がスローされます。しかし、何らかの理由で、テストレイヤーから ValidationAspect メソッドを実行することはありません
そして私のサービス
mockedSoftwareService Beanは機能パッケージにあり、Bean名は「サービス」で終わるため、アスペクトが呼び出されない理由がわかりません。両方の条件を満たしています。何が起こっている可能性があるかについて何か考えがありますか? 前もって感謝します
編集
java - Spring 非マネージド Bean への依存性注入
管理されていない JPA ドメイン クラスがあります。new
演算子を介してインスタンス化されます。
私のUserAccount
クラスには、パスワードをハッシュエンコードするためのbeforeSave()
my に依存するメソッドがあります。SecurityService
私の質問は、「Spring DI を取得してセキュリティ サービスをエンティティに挿入するにはどうすればよいですか?」です。AspectJ と LoadTimeWeaving が必要なようです。構成用の配列を試しましたが、どれも機能しないようです。NullPointerException
注入されたオブジェクトでメソッドを呼び出そうとすると、常にエラーが発生します。
UserAccount.java (これは JPA エンティティです)
AspectJ を使用するように春に指示しようとしています:
NitroApp.java (メインクラス)
build.gradle (構成)
gradle - AspectJ および spring-aspects の gradle で STS (Eclipse) に .classpath を設定する方法
@Configurable を使用して、春の側面からクラスに @Configurable のコンパイル時織りを使用するプロジェクトがあります。Spring Tool Suite 3.7.0 を使用し、gradle タスクを使用してアプリケーションをビルドおよび起動すると、すべてが実行されます。(プラグインのおかげで: https://github.com/eveoh/gradle-aspectj )。
今、私は AspectJ Eclipse の性質も使用したいと考えています。手動で、プロジェクトを AspectJ に変換し、spring-aspects.jar を AspectJ inpath として追加することで、これを実行しました。私もgradleでこれをやりたいです。プロジェクトをAspectJの性質に変えることは、次の方法で可能でした:
「spring-aspects.jarをinpathとして追加する」というステップも実行するようにgradleを構成するにはどうすればよいですか?
.classpath ファイルを比較すると、違いは次のとおりです。
(classpathentry org.eclipse.jst.j2ee.internal.web.container は既に存在していましたが、属性が欠落しています)
では、これを切り取ってクラスパスに追加するにはどうすればよいですか? 次のようにクラスパスを変更する例を見てきました。
...しかし、ここで常にエラーが
could not find method whenConfigured() for arguments [build_52wic5gr82z6rcs33lo3ix1lk$_run_closure7_closure12_closure13@73914b82] on org.gradle.plugins.ide.eclipse.model.EclipseClasspath_Decorated@6ca18169.
発生します。このエラーを修正するにはどうすればよいですか? これは、AspectJ inpath を構成して .classpath を手動で調整する正しい方法ですか?
spring - スプリング アスペクト: 織り込むパッケージを指定
Spring/Hibernate アプリケーションがあります。Hibernate によって作成されたカスタム タイプには Spring コンテキストが必要なので、Spring Aspects を使用して提供します。
Spring Security を追加した後、次のように stderr に多数のメッセージが表示されました。
織り込む必要のあるクラスのパッケージを指定して、他のパッケージを織り込まないようにすることは可能ですか?
解決
META-INF/aop.xml をリソース ルートに置き、不要なパッケージを除外します。
spring - spring data jpa リポジトリへのカスタム アノテーション アドバイスの適用
私はmysqlマスタースレーブレプリケーションに取り組んでいます。spring data jpa(spring boot)を使用しています。
私が必要としていたのは、すべての書き込み操作がマスター サーバーに送られ、読み取り専用操作が複数の読み取り専用スレーブに均等に分散されることです。
そのためには、次のことが必要です。
特別な JDBC ドライバーを使用します: com.mysql.jdbc.ReplicationDriver
次の URL でレプリケーションを設定します。
自動コミットをオフにする必要があります。(*) 接続は読み取り専用に設定する必要があります。
JDBC 接続が読み取り専用に設定されていることを確認するために、注釈と単純な AOP インターセプターを作成しました。
注釈
インターセプター
以下は私の春のデータリポジトリです
以下は私の Manager(Service) クラスです。
上記のコードでは @ReadOnlyConnection アノテーションがマネージャーまたはサービス層で指定されています。上記のコードは私にとってはうまくいきます。サービスレイヤーでスレーブデータベースから読み取り、マスターデータベースに書き込むだけの簡単なケースです。
私の実際の要件は、リポジトリレベル自体で @ReadOnlyConnection を使用できる必要があると言っていました。これは、サービスレイヤーの他のクラスで読み取り/書き込み操作の両方を行うビジネスロジックがかなりあるためです。したがって、 @ReadOnlyConnection を配置することはできませんサービス層で。
私はこのようなものを使用できるはずです
春の @Transactional または @Modifying または @Query アノテーションのように。以下は、私が言及しているものの例です。
私はaspectjとaopの世界の初心者です。ConnectionInterceptorでかなりの数のポイントカット正規表現を試しましたが、どれも機能しませんでした。私は長い間これを試してきましたが、まだ運がありません。
求められたタスクを達成する方法。