繁体   English   中英

Spring 3,在非托管类中注入 bean 的可配置注释的风险?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM