はい、注入豆は条件付きで可能ですか?しかし、多くの方法がありますが、プロファイルを使用することをお勧めします。
これにより、プロファイルに基づいて同じ時間に無名のBeanをさらに持つことができます。
@Bean
@Profile("!dev")
public class MyClass1 implements MyInterface {}
@Bean
@Profile("dev")
public class MyClass2 implements MyInterface {}
は、Java Configurationクラスで使用してプロファイルを設定することができます。
@Configuration
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("spring.profiles.active", "dev");
}
}
その後注釈@Autowired
がアクティブプロファイルに基づいて注入するための適切な実施を見つけるでしょう。 Baeldung's websizeで詳細を読んでください。ここで私は例を取りました。
第二の方法は、条件付き実装インタフェースConditionの復帰方法に基づいて、豆を注入注釈@Conditionalを使用することです。ここで
@Bean
@Conditional(MyClass1Condition.class)
public class MyClass1 implements MyInterface {}
@Bean
@Conditional(MyClass2Condition.class)
public class MyClass2 implements MyInterface {}
は、実装スケルトンは次のようになります方法です:
public class MyClass1Condition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// perform your logic
}
}
私は、メソッドレベルで何かを行うことができますか? – masSdev
私は自分の答えを編集しました。 –