2014-04-16 25 views
5

Tôi đang cố gắng cấu trúc lại xml hiện tại của Spring Integration thành chú thích 4.0.0. mới.Làm thế nào để cấu trúc lại XML tích hợp Spring thành hỗ trợ chú thích?

<!-- the service activator is bound to the tcp input gateways error channel --> 
<ip:tcp-inbound-gateway error-channel="errorChannel" /> 
<int:service-activator input-channel="errorChannel" ref="myService" /> 

Nhưng làm cách nào tôi có thể liên kết trình kích hoạt dịch vụ với kênh lỗi như trong xml?

@Configuration 
@EnableIntegration 
public class Config { 

    @Bean 
    public TcpInboundGateway gate() { 
     TcpInboundGateway gateway = new TcpInboundGateway(); 

     //??? how can I bind the service activator class as it was in xml? 
     gateway.setErrorChannel(MessageChannel); 
     return gateway; 
    } 
} 


@Service 
public class MyService { 

    @ServiceActivator(inputChannel = "errorChannel") 
    public String send(String data) { 
     //business logic 
    } 
} 

Trả lời

7

Vâng, vì tôi là tác giả của các tính năng cấu hình Java và chú thích mới mà tôi có thể giúp bạn.

Nhưng bạn nên sẵn sàng rằng nó không phải là dễ dàng như vậy để làm. Để loại bỏ xml ở tất cả các bạn có thể đi với một công cụ mới khác của chúng tôi - Java DSL.

Tôi geass chúng tôi sẽ có một số bước để làm cho nó hoạt động.

gateway.setErrorChannel(MessageChannel);@ServiceActivator(inputChannel = "errorChannel"). Bạn phải khai báo errorChannel như một bean:

@Bean 
public MessageChannel errorChannel() { 
    return new DirectChannel(); 
} 

Và sử dụng nó từ đó TCP Gateway:

gateway.setErrorChannel(this.errorChannel()); 

Hoặc, nếu bạn dựa vào mặc định errorChannel từ Framework, bạn nên @Autowired nó để Config đó.

Bước tiếp theo. Tôi không thấy @ComponentScan. Điều đó có nghĩa là @ServiceActivator của bạn có thể không hiển thị cho ngữ cảnh Ứng dụng.

Bạn nên cung cấp thêm tùy chọn cho TcpInboundGateway anyway: connectionFactory, requestChannel, replyChannel vv Mọi thứ phải là Đậu mùa xuân.

Để bắt đầu, điều đó là đủ. Hy vọng nó là rõ ràng và có ý nghĩa ở tất cả cho bạn.

+0

Cảm ơn điều đó đã giúp ích rất nhiều. Tất nhiên tôi có '@ ComponentScan' trong mã của tôi. Phần còn thiếu là tôi chỉ có thể tiêm kênh lỗi mặc định như tất cả các bean khác, như: '@Qualifier (" errorChannel ") MessageChannel errorChannel'. Nó bây giờ chạy tốt một lần nữa mà không cần cấu hình xml. – membersound

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