[英]Spring 3, risks of configurable annotation for injecting beans in un-managed classes?
我有一个充当 Rest API 的 Spring 3 项目,并且想将我拥有的 spring bean 连接到非托管类中以进行日志记录。
在尝试了许多不同的事情之后,有效的是使用注释@Configurable
标记我的非托管类。
喜欢:
@Configurable
public class ClassNotManagedBySpring {
@Autowired
@Qualifier("myBean")
private MyBean myBean;
}
@Service("myBean")
public class MyBean {
@Autowired
@Qualifier("someOtherBean")
private SomeOtherBean someOtherBean;
}
然后在我的 beans.xml 中:
<context:spring-configured/>
所以现在让我们说ClassNotManagedBySpring.java
是 6 个都做类似事情的类之一,除了其中 3 个由 spring 管理,因为它们有@Component
注释。
但是所有这 6 个类都需要@Autowire
MyBean.java
,只有一些需要@Configurable
注释。
需要注意的是,我之前已经在这个应用程序中将 AspectJ 用于多种其他目的。
我想知道突然以这种方式将 spring 管理的依赖项连接到非托管类中,我的 spring 应用程序有什么风险?
会不会有性能问题? 运行时出错的风险?
如果这不是将 spring 托管 bean 连接到非托管类的最佳方式,那是什么?
我多年来一直使用@Configurable
没有问题,如果您需要由 Spring 配置的应用程序实例化 bean,这是一个非常简单的解决方案。 我的用例都在 UI 层。 每当我需要构造函数中已有的自动装配值时,我也会使用@Configurable(preConstruction = true)
。 当然,如果你制作了数百万个@Configurable
对象,这可能是一个性能问题,否则我不会太担心。 我遇到的唯一一个小的美学问题是 Eclipse 在扩展@Configurable
类的类定义中给了我一些红色下划线,抱怨类 SomeClass的层次结构不一致,但它仍然编译它们,在问题视图或运行时没有任何错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.