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

Spring 3, risks of configurable annotation for injecting beans in un-managed classes?

我有一个 Spring 3 项目作为 Rest API,我想将我拥有的 spring bean 连接到非托管 class 以用于日志记录.

在尝试了许多不同的事情之后,有效的方法是使用注释 @Configurable.

标记我的非托管 class

喜欢:

@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 个 class 中的一个,它们都做类似的事情,除了其中 3 个由 spring 管理,因为它们有 @Component注解.

但是所有这 6 个 class 都需要 @Autowire MyBean.java,只有一些需要 @Configurable 注释。

请注意,我之前已经在此应用程序中出于多种其他目的使用 AspectJ。

我想知道我的 spring 应用程序突然以这种方式将 spring 托管依赖项连接到非托管 classes 有什么风险?

会不会有性能问题?运行时出错的风险?

如果这不是将 spring 托管 bean 连接到非托管 class 的最佳方式,那什么才是?

多年来我一直在使用 @Configurable,没有任何问题,如果您需要由 Spring 配置的应用程序实例化 bean,这是一个非常简单的解决方案。我的用例都在 UI 层。每当我需要构造函数中已有的自动装配值时,我也使用 @Configurable(preConstruction = true) 。当然,如果你制作了数百万个 @Configurable 个对象,它可能是一个性能问题,否则我不会太担心它。我遇到的唯一小美学问题是 Eclipse 在扩展 @Configurable classes 的 class 定义处给我一些红色下划线,抱怨 层次结构 class SomeClass不一致,但它仍然编译了它们,问题视图或运行时都没有错误。