0
votes

Créer un haricot de classes hérités sans modification et sans configuration XML

J'ai une classe d'aide héritée existante sans annotation de haricots et sans configuration XML. Je souhaite créer des haricots pour les mêmes classes sans modification (sans ajouter d'annotations) et sans configuration supplémentaire dans XML. C'est possible?


0 commentaires

3 Réponses :


5
votes

Oui, c'est possible et assez simple. Vous devez créer votre propre classe et l'annoter avec @configuration , puis créer une méthode annotée avec @bean renvoyant votre classe d'assistance. Quelque chose comme ça: xxx


0 commentaires

1
votes

Vous pouvez appeler une méthode @bean code> à partir d'un autre à l'aide de @configuration code> et obtenir une instance entièrement initialisée, comme suit:

public class Foo {
    @Value("Hello, world!")
    public String value;
}

@Configuration
public class Config {
    @Bean
    public Foo createFoo() {
        Foo foo = new Foo();
        System.out.println(foo.value); // Prints null - foo not initialized yet
        return foo;
    }

    @Bean
    public Bar createBar() {
        Foo foo = createFoo();
        System.out.println(foo.value); // Prints Hello, world! - foo have been initialized by the interceptor
        return new Bar(foo);
    }
}


0 commentaires

1
votes

Une autre option consiste à utiliser un beandefinitionRegistrypostProcesseur code> et enregistrez vos cours manuellement.

@RunWith(SpringRunner.class)
@SpringBootTest
public class LegacyBeansAutoConfigurationTest {
  @Autowired
  ApplicationContext context;

@Test
public void contextLoads() {
    Assertions.assertThat(context.getBeanNamesForType(LegacyBeansAutoConfiguration.Legacy1.class)).isNotNull();
    Assertions.assertThat(context.getBeanNamesForType(LegacyBeansAutoConfiguration.Legacy2.class)).isNotNull();
    Assertions.assertThat(context.getBeanNamesForType(LegacyBeansAutoConfiguration.Legacy3.class)).isNotNull();
}
}


0 commentaires