Where do I put my XML beans in a Spring Boot application?
As long as you're starting with a base @Configuration
class to begin with, which it maybe sounds like you are with @SpringBootApplication
, you can use the @ImportResource
annotation to include an XML configuration file as well.
@SpringBootApplication@ImportResource("classpath:spring-sftp-config.xml")public class SpringConfiguration { //}
You also can translate the XML config to a Java config. In your case it would look like:
@Beanpublic 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;}
You can put this method in the class with the @SpringBootApplication
annotation.
Spring boot ideal concept is avoid xml file. but if you want to keep xml bean, you can just add @ImportResource("classPath:beanFileName.xml")
.
I would recommend remove the spring-sftp-config.xml
file. And, convert this file to spring annotation based bean. So, whatever class has been created as bean. Just write @Service
or @Component
annotation before class name. for example:
XML based:
<bean ID="id name" class="com.example.Employee">
Annotation:
@Service or @Componentclass Employee{}
And, add @ComponentScan("Give the package name")
. This is the best approach.