example ejemplo create context bean application xml spring spring-boot configuration-files

ejemplo - ¿Dónde pongo mis beans XML en una aplicación Spring Boot?



spring create bean xml (3)

Estoy volviendo a la primavera (actualmente v4). Ahora todo es maravilloso con @SpringBootApplication y las otras anotaciones, ¡pero toda la documentación parece olvidar mencionar cómo defino otros beans en XML!

Por ejemplo, me gustaría crear una "Fábrica de sesiones SFTP" como se define en: http://docs.spring.io/spring-integration/reference/html/sftp.html

Hay un poco de XML para definir el bean, pero ¿dónde lo pongo y cómo lo vinculo? Anteriormente hice un:

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

para especificar el nombre del archivo y la ubicación, pero ahora que estoy tratando de usar:

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

¿Dónde pongo el archivo XML? ¿Hay un nombre mágico de primavera para llamarlo?


Concepto ideal de arranque de primavera es evitar el archivo xml. pero si desea mantener el bean xml, solo puede agregar @ImportResource("classPath:beanFileName.xml") .

Recomendaría eliminar el archivo spring-sftp-config.xml . Y, convertir este archivo a bean basado en anotaciones de primavera. Entonces, cualquier clase ha sido creada como bean. Simplemente escriba la anotación @Service o @Component antes del nombre de la clase. por ejemplo:

Basado en XML:

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

Anotación:

@Service or @Component class Employee{ }

Y, agregue @ComponentScan("Give the package name") . Este es el mejor enfoque.


Siempre y cuando @Configuration con una clase base @Configuration , que quizás parezca que estás con @SpringBootApplication , puedes usar la anotación @ImportResource para incluir también un archivo de configuración XML.

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


También puede traducir la configuración XML a una configuración Java. En tu caso se vería como:

@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; }

Puede poner este método en la clase con la anotación @SpringBootApplication .