2016-03-31 9 views
0

Ich habe zwei Projekte, das erste ist eine Spring-Boot-App und das zweite, d. H. Java statische Bibliotheksprojekt, das nicht von etwas anderem außer Java abhängig ist. In der Vergangenheit waren diese beiden Projekte ein Projekt, aber ich habe sie getrennt, da sie zwei verschiedene logische Komponenten repräsentieren, und diese Java-Bibliothek wird auch in anderen Teilprojekten verwendet. Nun, da die statische Bibliothek ist einfach ein Glas i nicht Klassen dieses Glases auf dem Schnittstellennamen basiert instanziiert vorgesehen, wie wir es im Frühjahr zum Beispiel tun, wenn die Schnittstelle im Pfad wurde:Erzwingen von externen Java-Java-Beans (Jar-Projekt), die von Spring Fabric verwaltet werden müssen

edu.university.ServiceLayer.StudentInterface 

würde ich leicht tun:

Student object = (Student) applicationContext.getBean("StudentInterface"); 

und das gibt mir den Schüler Objekt

Nun ich mag würde das gleiche mit der externen Java-Bibliothek zu tun. Da ich das noch nie gemacht habe, ist meine Frage, was wäre der beste Weg, es zu tun, wenn ich bedenke, dass ich diese Bibliothek nicht von etwas anderem außer Java abhängig machen möchte.

In meinem Spring Boot-Projekt, um dies zu tun, brauchte ich einfach die ausgewählte Bean mit der richtigen artifcat, d. H. @Component, @Repository @Service usw. kommentieren und diese Bohnen werden dann automatisch von der Feder Fabric verwaltet. I.e. Ich kann sie dann durch den Druck der BeanDefinitionNames gesehen() des application heißt

String[] beanNames = applicationContext.getBeanDefinitionNames(); 

Aber dieser Trick mit externen jar nicht funktioniert. Nun, was wäre der beste Kompromiss für diese Konstellation, d. H. Shell Ich füge tatsächlich Sprungabhängigkeit zu meiner jar-java-Bibliothek hinzu oder gibt es irgendeine magische Weise, die ich tun kann, ohne diese Abhängigkeit zu meiner Bibliothek hinzuzufügen. Wieder mein Ziel ist es Frühling, damit ausgewählte Bohnen der externen Bibliothek verwalten heißt, würde ich sie unter erscheinen mag:

applicationContext.getBeanDefinitionNames() 

Gibt es eine musterartige Art und Weise, dies zu erreichen, verwendet wird?

vielen dank für die ideen.

Antwort

1

Dies bezieht sich nicht auf Spring Integration überhaupt.

Plus Sie müssen mehr lesen documentations.

Jede im CLASSPATH verfügbare Klasse kann als eine Bohne im Spring Container instanziiert werden, z.

@Bean 
public Foo foo() { 
    return new Foo(); 
} 

Wenn die Foo ist in Ihrem Glas. Keine Notwendigkeit, sie für diese stereotypen Annotationen zu ändern.

BTW, um mehr klar, dass man sogar Bohnen für Java nativen Klassen erstellen:

@Bean 
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
public Date now() { 
    return new Date(); 
} 
+0

vielen Dank für die Antwort. Ich habe das Federintegrations-Tag wie vorgeschlagen entfernt. – Tito

Verwandte Themen