JBa*_*uch 8 spring spring-java-config
我想使用Spring Framework的动态语言支持.
在XML我只用了lang命名空间,但我想使用Java配置(即@Configuration类)只.
我可以想象我可以通过初始化org.springframework.scripting.configpackage,inc中的所有地狱来做到这一点.他们创造的所有BeanPostProcessors,Handlers,Parsers和FactoryBeans,但我真的不想去那里.
还有其他方法吗?如果没有,那么从Groovy脚本创建可重新加载的bean所需的最小配置是什么?
你为什么不直接通过电子邮件询问我们?:-)
我看到XML Lang的支持非常神奇.有足够的东西是基于BeanDefinition和它的attributes.另外还有一些钩子ProxyFactory和CGLIB用于lang:property.
我所看到的JavaConfig是一些Java类包装的ScriptEvaluator和RefreshableResourceScriptSource从Spring集成:
@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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里Calculator.groovy:
x + y
Run Code Online (Sandbox Code Playgroud)
我理解它不像从XML定义的界面和配置看起来那么灵活,但至少它会帮助你看到我们的位置.
随意提出有关此问题的JIRA问题,我们将看到我们可以在这里做些什么.喜欢的东西@EnableScripting和@ScriptSource(refreshDelay = 1000)对Resource @Bean方法.
我想现在你可以只使用@Import一些带有lang定义的XML片段.
干杯,阿尔乔姆
| 归档时间: |
|
| 查看次数: |
1778 次 |
| 最近记录: |