Tại sao bạn không yêu cầu chúng tôi trực tiếp qua email? :-)
Tôi thấy rằng hỗ trợ XML Lang là ma thuật đáng kể. Có đủ nội dung dựa trên BeanDefinition
và attributes
của nó. Ngoài ra, có một số móc với ProxyFactory
và CGLIB
cho số lang:property
.
Những gì tôi thấy cho JavaConfig là một số wrapper lớp Java cho ScriptEvaluator
và RefreshableResourceScriptSource
từ Spring Integration:
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class RefreshableScriptJavaConfigTests {
@Autowired
private Calculator calculator;
@Test
public void testGroovyRefreshableCalculator() {
assertEquals(5, this.calculator.add(2, 3));
}
@Configuration
public static class ContextConfiguration {
@Value("classpath:org/springframework/integration/scripting/config/jsr223/Calculator.groovy")
private Resource groovyScriptResource;
@Bean
public ScriptEvaluator groovyScriptEvaluator() {
return new GroovyScriptEvaluator();
}
@Bean
public Calculator calculator() {
return new Calculator(new RefreshableResourceScriptSource(this.groovyScriptResource, 1000));
}
}
public static class Calculator {
private final ScriptSource scriptSource;
@Autowired
private ScriptEvaluator scriptEvaluator;
public Calculator(ScriptSource scriptSource) {
this.scriptSource = scriptSource;
}
public int add(int x, int y) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("x", x);
params.put("y", y);
return (int) this.scriptEvaluator.evaluate(this.scriptSource, params);
}
}
}
Trường hợp Calculator.groovy
là:
x + y
Tôi hiểu rằng nó không phải là quá linh hoạt như nó có giao diện và cấu hình từ định nghĩa XML, nhưng ít nhất nó sẽ giúp bạn thấy chúng ta đang ở đâu.
Vui lòng nêu vấn đề JIRA về vấn đề này và chúng tôi sẽ xem chúng tôi có thể làm gì ở đây. Một cái gì đó như @EnableScripting
và @ScriptSource(refreshDelay = 1000)
trên phương pháp Resource
@Bean
.
Tôi nghĩ rằng hiện tại bạn chỉ có thể @Import
một số đoạn mã XML có định nghĩa lang
.
Chúc mừng, Artem
Nguồn
2014-10-06 09:03:54
Cám ơn câu trả lời của bạn, người đàn ông! Tôi không hỏi bằng email 1. Tôi nghĩ rằng đó là một câu hỏi hay để được công khai và có thể tìm thấy, 2. Bùng nổ, bạn chỉ nhận được 25 đại diện :) Không tệ lắm, tôi phải nói, tôi mong đợi tồi tệ hơn. Và có, '@ EnableScripting' là cách, tôi sẽ thêm một yêu cầu tính năng. – JBaruch
https://jira.spring.io/browse/SPR-12300 Số may mắn :) – JBaruch