我来解释(逗逼)一下,赞同楼上说法,introduction译成“引入”较合理。
那个introduction的意思是:
有个类叫小明(biz),小明隔壁住着老王(FitImpl),老王实现了一个技能叫开豪车(Fit)
现在上帝声明了一个切面,这个切面给小明指定一个新的爹叫老王,于是小明每次叫爸爸的时候就能开豪车了~
类匹配(小明):type-matching
接口(开豪车):implement-interface
接口的实现类(老王):default-impl
引入的作用:小明干自己的事的时候(叫爸爸)能莫名其妙地开上豪车而不用做多余的工作,这些工作由上帝(AOP)帮他完成,这叫“解耦”
那个introduction的意思是:
有个类叫小明(biz),小明隔壁住着老王(FitImpl),老王实现了一个技能叫开豪车(Fit)
现在上帝声明了一个切面,这个切面给小明指定一个新的爹叫老王,于是小明每次叫爸爸的时候就能开豪车了~
类匹配(小明):type-matching
接口(开豪车):implement-interface
接口的实现类(老王):default-impl
引入的作用:小明干自己的事的时候(叫爸爸)能莫名其妙地开上豪车而不用做多余的工作,这些工作由上帝(AOP)帮他完成,这叫“解耦”
2016-09-25
同理ByType是以set方法的参数类型为准,取所有set方法,通过Method.getParameterTypes()[0].getClass()得到方法的参数类类型(set方法只能有一个参数),如果该类型匹配配置文件中指定的bean的class,就执行该方法。
constructor也是反射,类似于ByType,区别是取得构造器的全部参数类型,逐一匹配执行。
所以我认为Spring的Autowired应该是基于java放射机制
constructor也是反射,类似于ByType,区别是取得构造器的全部参数类型,逐一匹配执行。
所以我认为Spring的Autowired应该是基于java放射机制
2016-09-24
在课程的例子中,bean就对应了AutoWiringService的实例化对象,arg0对应了autoWiringDAO的实例化对象。byName的Name是指方法的Name,而不是field的Name。
2016-09-24
byName是以set方法名后缀为准,而不是以成员变量名为准。我想这里的实现原理应该是利用了java反射,使用先得到bean的class,再通过class.getMethods()取出方法,取其中名称后缀和BeanId一致的set方法来执行,setMethod.invoke(bean,arg0)
2016-09-24
这个老师讲的东西,实在听不下去。无法吸收讲的东西。建议慕课网换掉他。慕课网不换他,我换慕课网。。。我去 看 佟刚的 Java视频_Spring4 去了。
2016-09-24
最赞回答 / 水木星火
具体原因有两个,已经找到@Component注解@aspect.xml中配置缺少<aop:aspectj-autoproxy></aop:aspectj-autoproxy><...图片...><...图片...>
2016-09-24