[Spring] 构造函数加强的办法

sharajava 2010-08-03

不知道哪位同学知道:有没有什么办法通过AspectJ或什么其它AOP的方法把构造函数加强,把代码中new出来的对象注入相应的属性,也就是说通过new的方式得到Spring容器中的一个Bean?

 

sharajava 2010-08-03
如果不可能,可不可以给出充分的解释。

或者不通过Spring,集成类似Scala之类的东东有没有可能?
silencer 2010-08-03
首先,不说能否实现。个人觉得,当我们很别扭的去实现一个功能的时候我们是不是要回头想一下我们的实现方式是否正确。SPRING 最大的贡献就是 DI 和 AOP ,DI的核心思想就是将你依赖的东西委托给第三方管理。现在BOSS中当我们 NEW 一个领域上下文时候要注入一些属性,我们何不将NEW这一个过程同样委托给第三方(容器或是我们自己维护的代理容器)。
sharajava 2010-08-04
silencer 写道
首先,不说能否实现。个人觉得,当我们很别扭的去实现一个功能的时候我们是不是要回头想一下我们的实现方式是否正确。SPRING 最大的贡献就是 DI 和 AOP ,DI的核心思想就是将你依赖的东西委托给第三方管理。现在BOSS中当我们 NEW 一个领域上下文时候要注入一些属性,我们何不将NEW这一个过程同样委托给第三方(容器或是我们自己维护的代理容器)。


实际上这里讨论的核心应该并不是Spring,是AOP。我们知道AOP的典型应用可以在方法调用的之前之后做一些事情,比如调用foo.bar()方法时,可以由AOP的机制把foo对象的bar()方法加强(比如,加入事务的控制等)。推想:那是不是可以在Foo这个类的构造方法上加强,把返回的对象实例注意其需要的属性呢?只是说注入的依据和要注入的对象(bean)是Spring来维护的(我们当然也可以不用Spring)。
zhutao65786591 2010-08-04
从AOP角度来看,进行拦截之前,必须先加载拦截器,从解耦合的角度看,aop一般是直接交给spring容器管理,但new的时候,是直接通过类加载机制进行加载,根本不走容器,个人感觉暂时还不能实现直接通过new把类的属性设值进去。
Global site tag (gtag.js) - Google Analytics