私のプロジェクトでは、私は異なるサービスを持っています。各サービスは独自のPermission
を定義できます。各パーミッションに対して、Beanが作成されます。このようにして、Authorization
サービスは、実際にそれらを知らずに、利用可能なすべての許可を注入することができます。beanが2回定義されている場合は例外をスローしますか?
ServiceA
のPermission
定義は次のようになります。
@Configuration()
public class ServiceAPermissions extends Permissions {
private static final String BASE = "servicea";
public static final String SERVICEA_READ = join(BASE, READ);
public static final String SERVICEA_WRITE = join(BASE, WRITE);
@Bean()
Permission getReadPermission() {
return new Permission(SERVICEA_READ);
}
@Bean()
Permission getWritePermission() {
return new Permission(SERVICEA_WRITE);
}
}
ServiceB
は以下のPermission
Sを定義します:明らかに
@Configuration()
public class ServiceBPermissions extends Permissions {
private static final String BASE = "serviceb";
public static final String SERVICEB_READ = join(BASE, READ);
@Bean()
Permission getReadPermission() {
return new Permission(SERVICEB_READ);
}
}
が、これは定義された豆の名前の衝突などで終了します私はgetReadPermission
という名前のBeanを2回定義しました。もちろん、私はgetServiceAReadPermission
のようなメソッドに名前を付けることができるので、それらは区別されますが、これは慣習であり無視されます。
この場合、Springは重複した定義について私に通知しません。単にインスタンスを生成し、他の定義を無視します。 Beanが2回定義されている場合、SpringにException
を投げるように指示する方法はありますか?このようにして、重複した定義が常に認識されます。
また、メソッド署名の代わりにランダムなBean名を使用する必要があることをSpringに伝える方法がありますか?私は各豆に手作業で名前を付けることができることを知っていますが、私はそれを避けたいと思います。開発者はこれを強制することはなく、それでもそれを忘れるかもしれません。
のラインに沿って、何が必要ありませんPermissionFactory-豆を提供することをお勧めしたいです豆。 – Ivan