it-swarm.com.de

Wo füge ich meine XML-Beans in einer Spring Boot-Anwendung ein?

Ich komme wieder in den Frühling (derzeit v4). Mit @SpringBootApplication und den anderen Anmerkungen ist das jetzt alles wunderbar, aber die gesamte Dokumentation scheint zu vergessen, wie ich andere Beans in XML definiere!

Zum Beispiel möchte ich eine "SFTP Session Factory" erstellen, wie in: .__ definiert. http://docs.spring.io/spring-integration/reference/html/sftp.html

Es gibt ein nettes bisschen XML, um die Bean zu definieren, aber wo in aller Welt soll ich sie platzieren und wie verlinke ich sie? Vorher habe ich gemacht:

ApplicationContext context = new ClassPathXmlApplicationContext(
                "classpath:applicationContext.xml");

um den Dateinamen und den Ort anzugeben, aber jetzt versuche ich zu verwenden:

ApplicationContext ctx = SpringApplication.run(Application.class);

Wo lege ich die XML-Datei ab? Gibt es einen Namen für einen magischen Frühling?

26
David Newcomb

Solange Sie mit einer @Configuration-Basisklasse beginnen, die sich wie mit @SpringBootApplication anhört, können Sie mit der Annotation @ImportResource auch eine XML-Konfigurationsdatei hinzufügen.

@SpringBootApplication
@ImportResource("classpath:spring-sftp-config.xml")
public class SpringConfiguration {
  //
}
33
bvulaj

Sie können die XML-Konfiguration auch in eine Java-Konfiguration konvertieren. In Ihrem Fall würde es so aussehen:

@Bean
public DefaultSftpSessionFactory sftpSessionFactory() {
    DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory();
    factory.setHost("localhost");
    factory.setPrivateKey(new ClassPathResource("classpath:META-INF/keys/sftpTest"));
    factory.setPrivateKeyPassphrase("springIntegration");
    factory.setPort(22);
    factory.setUser("Kermit");
    return factory;
}

Sie können diese Methode mit der Annotation @SpringBootApplication in die Klasse einfügen.

3
dunni

Spring Boot ideale Konzept ist XML-Datei zu vermeiden. Wenn Sie jedoch XML-Bean behalten möchten, können Sie einfach @ImportResource("classPath:beanFileName.xml") hinzufügen.

Ich würde empfehlen, die spring-sftp-config.xml-Datei zu entfernen. Und konvertieren Sie diese Datei in ein Bean-Bean, das auf einem Spring-Kommentar basiert. Welche Klasse auch immer als Bean erstellt wurde. Schreiben Sie einfach @Service oder @Component Annotation vor dem Klassennamen. zum Beispiel:

XML-basiert:

<bean ID="id name" class="com.example.Employee">

Anmerkung:

@Service or @Component
class Employee{
}

Und füge @ComponentScan("Give the package name") hinzu. Dies ist der beste Ansatz.

0
Md Jalal