2015-07-28 22 views
16

Tôi sẽ trở lại Spring (hiện tại là v4). Thật tuyệt vời bây giờ với @SpringBootApplication và các chú thích khác nhưng tất cả tài liệu dường như quên đề cập đến cách tôi định nghĩa các bean khác trong XML!Tôi đặt đậu XML của mình ở đâu trong ứng dụng Khởi động mùa xuân?

Ví dụ tôi muốn tạo ra một "SFTP phiên Factory" theo quy định tại địa chỉ: http://docs.spring.io/spring-integration/reference/html/sftp.html

Có một chút tốt đẹp của XML để xác định đậu nhưng nơi trên trái đất để tôi đặt nó và làm thế nào để Tôi liên kết nó trong? Trước đây tôi đã làm một:

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

để chỉ định tên tập tin và vị trí nhưng bây giờ mà tôi đang cố gắng để sử dụng:

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

Tôi nên đặt các tập tin XML? Có một tên mùa xuân kỳ diệu để gọi nó không?

Trả lời

23

Miễn là bạn bắt đầu với lớp cơ sở @Configuration để bắt đầu, có vẻ như bạn đang ở với @SpringBootApplication, bạn cũng có thể sử dụng chú thích @ImportResource để bao gồm tệp cấu hình XML.

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

Tôi có phải đặt @ImportResource lên trên mọi ứng dụng mùa xuân và trường hợp kiểm tra mà tôi viết hoặc có tên/vị trí mặc định tự động xem trong mùa xuân không? –

+0

@DavidNewcomb Bạn chỉ cần đảm bảo rằng lớp cấu hình có chú thích có thể truy cập được từ gốc cấu hình của bạn. Nếu đó là một cái gì đó bạn sử dụng tất cả các thời gian, bạn thậm chí có thể thêm lớp tự động cấu hình của riêng bạn cho nó. – chrylis

+0

@DavidNewcomb bạn theo truyền thống chỉ muốn một '@ SpringBootApplication' trong ứng dụng của bạn, vì chính nó là sự kết hợp của' @ Configuration' và một số khác phải có. '' ImportResource' của bạn chỉ cần nằm trên một lớp '@ Configuration' duy nhất được Spring quét, giống như tự động quét xảy ra/xảy ra ở vùng đất XML. – bvulaj

2

Bạn cũng có thể dịch cấu hình XML sang cấu hình Java. Trong trường hợp của bạn nó sẽ trông giống như:

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

Bạn có thể đặt phương pháp này trong lớp với @SpringBootApplication chú thích.

0

Khái niệm lý tưởng khởi động mùa xuân là tránh tệp xml. nhưng nếu bạn muốn giữ lại xml bean, bạn chỉ có thể thêm @ImportResource("classPath:beanFileName.xml").

Tôi khuyên bạn nên xóa tệp spring-sftp-config.xml. Và, chuyển đổi tệp này sang bean dựa trên chú thích mùa xuân. Vì vậy, bất cứ lớp nào đã được tạo thành bean. Chỉ cần viết chú thích @Service hoặc @Component trước tên lớp. ví dụ:

XML dựa trên:

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

chú giải:

@Service or @Component 
class Employee{ 
} 

Và, thêm @ComponentScan("Give the package name"). Đây là cách tiếp cận tốt nhất.

+0

Câu hỏi là "Làm cách nào để liên kết trong các tệp xml hiện có?" và không phải "Làm cách nào để chuyển đổi tất cả các hạt của tôi thành chú thích?". Câu trả lời của bạn giống như câu trả lời của bvulaj. –

Các vấn đề liên quan