Spring(現在はv4)に戻ります。 @SpringBootApplication
と他のアノテーションで今ではすべてが素晴らしいですが、すべてのドキュメントはXMLで他のBeanをどのように定義するかについて言及するのを忘れているようです!
たとえば、次の場所で定義されている「SFTP Session Factory」を作成したいと思います。 http://docs.spring.io/spring-integration/reference/html/sftp.html
Beanを定義するXMLが少しありますが、一体どこに配置し、どのようにリンクするのですか?以前に私がやったこと:
ApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:applicationContext.xml");
ファイル名と場所を指定しますが、今私は使用しようとしています:
ApplicationContext ctx = SpringApplication.run(Application.class);
XMLファイルはどこに配置しますか?それを呼ぶ魔法の泉の名前はありますか?
@Configuration
のように聞こえるかもしれませんが、ベースの@SpringBootApplication
クラスで開始している限り、 @ImportResource
を使用できます。 XML構成ファイルも含めるアノテーション。
@SpringBootApplication
@ImportResource("classpath:spring-sftp-config.xml")
public class SpringConfiguration {
//
}
XML構成をJava構成に変換することもできます。あなたの場合、次のようになります。
@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;
}
@SpringBootApplication
アノテーションを使用して、このメソッドをクラスに配置できます。
スプリングブートの理想的な概念は、xmlファイルを避けることです。ただし、XML Beanを保持する場合は、@ImportResource("classPath:beanFileName.xml")
を追加するだけです。
_spring-sftp-config.xml
_ファイルを削除することをお勧めします。そして、このファイルをSpringアノテーションベースのBeanに変換します。したがって、Beanとして作成されたクラスは何でも。クラス名の前に_@Service
_または_@Component
_注釈を書くだけです。例えば:
XMLベース:
_<bean ID="id name" class="com.example.Employee">
_
注釈:
_@Service or @Component
class Employee{
}
_
そして、@ComponentScan("Give the package name")
を追加します。これが最善のアプローチです。