この質問でお手数をおかけして申し訳ありませんが、私は最終的にヘッドストンパーを見つけてしまい、これを間違った方法で扱っているのではないかと思っています.
のコレクションを含むクラスをマッピングしorg.springframework.security.core.authority.SimpleGrantedAuthority
て、ORM によって熱心にロードされたクラスを春のセキュリティ クラスに送信する必要がないようにしたいと考えています。しかし、その "role" 属性は getter "getAuthority" に関連付けられており、オリカが問題を起こすのはそのときです。Orika に getter によって返された値を使用させて、宛先クラスの setter に入れることはできますか?
あなたが十分に気にかけているなら、ここに私の問題の少しの文脈があります. アプリに Spring セキュリティを使用しています。org.springframework.security.core.userdetails.UserDetails
ユーザーが認証され、権限があるかどうかをSpringが確認できるように、を返すサービスがあります。私たちが持っている UserDetail の実装は、という名前のローカルのものUser
です。このクラスは を実装しているため、このユーザーの権限を返すorg.springframework.security.core.userdetails.UserDetails
メソッドがあります。public Collection<? extends GrantedAuthority> getAuthorities();
User
データベースにこれがあり、休止状態で処理されたという事実を除いて、すべてが順調でした。開いているセッションを表示したままにする最初の選択肢。私たちはそれを望んでいません。2 番目の選択肢は、ORM、EARGER のフェッチを行うことでした。私たちもそれを望んでいませんでした。そこで、DTO を使用して UserDetail を実装し、それを orika でマッピングすることにしました。その時、すべての地獄が解き放たれました。org.springframework.security.core.GrantedAuthority
インターフェースです。使用している具象クラスはorg.springframework.security.core.authority.SimpleGrantedAuthority
. これは、属性名が「role」であるにもかかわらず、その getter が「getAuthority」であるため、マップするのが難解で危険なクラスです。
public String getAuthority() {
return role;
}
スプリングチームとオリカチームはあまり仲が良くないようです。それ以外の場合は、Java 標準に従ってプロパティに名前を付け、orika はそれを直接マッピングしたでしょう。また、私はこの特定のケースのためにカスタム マッパーを定義することに消極的であり、それが私を悩ませてきました。すべての「魔法」を特定のクラスのカスタムマッパーに置き換える以外に、ゲッターメソッドによって返された値をオリカに使用させる既知の方法はありますか?