gpt4 book ai didi

java - 如何从 Java 类调用 spring 组件

转载 作者:行者123 更新时间:2023-11-29 05:17:25 26 4
gpt4 key购买 nike

我有一个来自 JDBCTemplate 的 rowcallBackHandler,但是当我使用 new 运算符时,我无法在 rowbackhandler 中获取任何 Spring 组件>。基本上,我需要迭代大结果集。

我需要在每 1000 条记录后调用一个方法,但我无法调用该方法; Autowiring 或组件扫描不工作。如何在普通 java 类中注入(inject) spring bean?

最佳答案

听起来您想动态注入(inject) rowcallbackHandler,因为您每次执行 SQL 时都会生成对象。

作为一般的最佳实践,Spring 依赖注入(inject)实际上应该只用于类单例对象(即服务、DAO 等)。那就是像对象一样的回调不需要或使用依赖注入(inject)。相反,您需要将周围的类似单例的对象(@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() 自动注入(inject)对象,但它需要 @Configurable AspectJ 魔法(除非你知道自己在做什么,否则不要这样做) .

关于java - 如何从 Java 类调用 spring 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com