Je reviens au printemps (actuellement v4). Tout est merveilleux maintenant avec @SpringBootApplication
et les autres annotations, mais toute la documentation semble oublier de mentionner comment je définis les autres beans en XML!
Par exemple, j'aimerais créer une "fabrique de sessions SFTP" comme défini dans: http://docs.spring.io/spring-integration/reference/html/sftp.html
Il y a un joli morceau de XML pour définir le bean, mais où puis-je le mettre et comment le lier? Auparavant, j'ai fait un:
ApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:applicationContext.xml");
pour spécifier le nom du fichier et l'emplacement, mais maintenant que j'essaie d'utiliser:
ApplicationContext ctx = SpringApplication.run(Application.class);
Où dois-je placer le fichier XML? Y a-t-il un nom de ressort magique pour l'appeler?
Tant que vous commencez par une classe @Configuration
de base, qui ressemble peut-être à @SpringBootApplication
, vous pouvez également utiliser l'annotation @ImportResource
pour inclure un fichier de configuration XML.
@SpringBootApplication
@ImportResource("classpath:spring-sftp-config.xml")
public class SpringConfiguration {
//
}
Vous pouvez également traduire la configuration XML en une configuration Java. Dans votre cas, cela ressemblerait à:
@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;
}
Vous pouvez mettre cette méthode dans la classe avec l'annotation @SpringBootApplication
.
Le concept idéal pour le démarrage de printemps est d'éviter les fichiers XML. mais si vous voulez conserver xml bean, vous pouvez simplement ajouter @ImportResource("classPath:beanFileName.xml")
.
Je recommanderais de supprimer le fichier spring-sftp-config.xml
. Et convertissez ce fichier en bean basé sur des annotations de printemps. Donc, quelle que soit la classe qui a été créée en tant que haricot. Il suffit d'écrire l'annotation @Service
ou @Component
avant le nom de la classe. par exemple:
Basé sur XML:
<bean ID="id name" class="com.example.Employee">
Annotation:
@Service or @Component
class Employee{
}
Et ajoutez @ComponentScan("Give the package name")
. C'est la meilleure approche.