Puis-je prolonger un @component et de créer une autre classe @component et faire un seul disponible à la fois?

jishamenon:

J'ai un pot de bibliothèque que je veux fournir un certain nombre d'applications. Le comportement que je veux est de créer une classe de composant de ressort commun dans la bibliothèque. Si dans les applications, le même composant n'est pas prolongée puis utilisez le composant commun; si elle est étendue dans l'application, puis utiliser le composant étendu (classe enfant). Est-ce possible? - Créer CommonComponent que si un enfant pour cette classe n'existe pas.

J'utilise Java 1.8, Springboot2.0

classe créée dans la bibliothèque:

@Component
public class CommonComponent{}

Dans l'une des applications de l'enfant à l'aide de la bibliothèque, j'ai ajouté un composant enfant:

@Component
public class ChildComponent extends CommonComponent{}

J'attendu une ChildComponent composant créé; mais dans le scénario ci-dessus 2 composants - CommonComponent et ChildComponent sont créés.

Todd:

Une façon que vous pouvez faire est de tirer parti de l' @ConditionalOnMissingBeanannotation qui a Spring Boot. Lorsqu'il est combiné avec une définition de haricots dans une @Configurationclasse, nous pouvons dire Spring pour définir seulement notre haricot si elle ne possède pas déjà un.

Ceci est non testé:

@Configuration
public class CustomComponentConfiguration {

    @ConditionalOnMissingBean(CustomComponent.class)
    @Bean
    public CustomComponent customComponent() {
        return new CustomComponent();
    }
}

Dans cet exemple, lorsque nos @Configurationcourses, printemps détermine s'il y a un autre grain qui est CustomComponent. Sinon, il exécute la customComponent()méthode et définit tout ce que vous revenez haricots. Donc , si quelqu'un d' autre définit une ChildComponent, cette méthode ne sera pas appelé.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=223615&siteId=1
conseillé
Classement