@Bean
または@Component
のクラスは、起動時にBeanビジター機構を介して起動されます。起動時にこのBeanをSpringコンテキストから除外するには、BeanPostProcessor
(here)を作成し、専用アノテーションを確認してください。ただし、理解している限り、Beanを実行時にコンテキストに戻すことはできません。
結果として、あなたはリクエストが入って来たときに、正しい操作/モックを実行する(または503 HTTPコードを送信)するために、このBeanは「インテリジェント」にする必要がありますが。
FF4jは確かにあなたは、この動作を実装助けることができませんRESTコントローラの上部にある単一の注釈。あなたはどうすることもできます
- 専用FF4J注釈
- とのインタフェースが実装または別のものを選択するために別の名前を持つインターフェースの2つの実装、毎回
- 使用FF4Jを作成してコメントを付ける、インターフェースを作成します。実行時にここで
いくつかのコードスニペットは、アイデアを得るために:
public interface GreetingService {
@Flip(name = "theFeatureIDToToggle", alterBean = "greeting.french")
String sayHello(String name);
}
@Component("greeting.french")
public class GreetingServiceFrenchImpl implements GreetingService {
public String sayHello(String name) {return "Bonjour " + name;
}
@Component("greeting.english")
public class GreetingServiceEnglishImpl implements GreetingService {
public String sayHello(String name) {return "Hello " + name;
}
//... import
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-ff4j-aop-test.xml")
public class FeatureAdvisorTest {
@Autowired
private FF4j ff4j;
@Autowired
@Qualifier("greeting.english")
private GreetingService greeting
@Test
public void testAnnotatedFlipping_with_alterBean() {
ff4j.disable("theFeatureIDToToggle");
Assert.assertTrue(greeting.sayHello("CLU").startsWith("Hello"));
ff4j.enable("theFeatureIDToToggle");
Assert.assertTrue(greeting.sayHello("CLU").startsWith("Bonjour"));
}
}
は、あなたが望むように、すべてのサンプルが用意されていhere、単一のメソッドやクラス全体を切り替えることができます。