![](/img/trans.png)
[英]I need to invoke a Spring Service from a java class, how to set the active profile for spring application from java class
[英]how to invoke a spring component from Java class
我有一个rowcallBackHandler
从JdbcTemplate的,但我使用new
运营商,我不能够获得内部的任何Spring组件rowbackhandler
。 基本上,我需要迭代大结果集。
我需要在每1000条记录后调用一个方法,但是我无法调用该方法; 自动装配或组件扫描不起作用。 如何在普通的java类中注入spring bean?
听起来您想要动态注入rowcallbackHandler,因为每次执行SQL时都会生成对象。
作为一般的最佳实践,Spring依赖注入应该只用于类似单例的对象(即Services,DAO等)。 这就是对象不应该需要或使用依赖注入的回调。 相反,你需要用你的callbackhandler需要连接你周围的类似单子的对象(@ Service,@ Controller,@ Repository ...等),然后通过构造函数或类似常规闭包的词法范围访问依赖项(我忘记了什么它在Java中调用)。 我不知道你的Java技能水平是什么,但听起来你可能不知道匿名课程。
以下是使用匿名类的示例。
@Service
public MyService {
@Autowired
JdbcTemplate template;
@Autowired
Something something;
public void doSomething() {
template.query("select * from something", new RowCallbackHandler() {
public void processRow(ResultSet rs) {
System.out.println(something);
//actually do something
}
});
}
}
话虽如此,你可以使用new Blah()
自动注入对象,但它需要@Configurable
AspectJ魔法(除非你知道你在做什么,否则不要这样做)。
要在普通的Java类中使用spring bean,需要ApplicationContext
,然后调用getBean
,将你在application-context.xml
声明的bean id
传递给它。 例如
ApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");
Foo foo = ctx.getBean("beanId", Foo.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.