2017-06-01 2 views
0

Angenommen, ich habe ein Base-Projekt, das ich als Abhängigkeit in anderen Projekten verwenden werde. In diesem Base-Projekt habe ich eine Komponente, die ich anpassen möchte. Um es einfacher zu machen, nennen wir es Tools. Das Base-Projekt verwendet Tools in verschiedenen Klassen. Ist es möglich, die Methoden aus der Tools-Komponente in einem neuen Projekt zu überschreiben und Base die überlagerten Methoden zu verwenden?Override @Component aus Abhängigkeit

Sorry, wenn das eine grundlegende Frage ist, aber ich habe nichts darüber gefunden.

+0

Denken Sie müssten ereignisbasierte Code für das mit Event-Handler machen. –

Antwort

1

Wenn Sie das Originalpaket für die ursprüngliche Komponente Bean gescannt haben, beenden Sie das Scannen des Pakets und erweitern Sie es selbst und scannen Sie das Paket, das Sie neu implementiert haben. Es sollte funktionieren. Mit anderen Worten, Sie können eine BeanPostProcessor definieren und sie zu Ihrer ersetzen. Beides sollte gut funktionieren.

+0

Danke, der BeanPostProcessor hat die Komponente ersetzt. – Smaniotto

0

Es ist noch nicht lange her, aber ich würde gerne eine wirklich einfache Art und Weise teilen. Ich konnte nicht glauben, wie einfach es ist.

Erweitern Sie einfach die Komponente, die Sie überschreiben möchten, und fügen Sie @Primary hinzu.

@Component 
public class Parent { 

@Primary 
@Component 
public class Child extends Parent { 

Nun wird Ihre App Kind statt Eltern verwenden, in denen Eltern @Autowired wurde