!!!本贴只是记录本人有疑惑的问题,答案是自己摸索猜测的,不一定正确哦
前景提要:
目录结构如图所示;
SpringConfig设置了 @Configuration @EnableAspectJAutoProxy@ComponentScan("miao.demo")
BookDaoImpl是BookDao接口的实现类,配置了@Repository
问题描述
在getBean()的时候想采用直接获取BookDaoImpl.class的方式,然后华丽丽的报错了 !!意思时找不到这个bean..但是BookDaoImpl已配置了@Repository
public class App {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
BookDaoImpl bookDao = ctx.getBean(BookDaoImpl.class);
System.out.println(bean);
System.out.println(bean.getClass());
}
}
分析
尝试将getBean()的参换成BookDao.class;获取的bean和对应的class输出得到了如图所示的东西,我意识到是因为我开启了代理模式引起的~
JDK反射生成代理必须面向接口, 这是由Proxy的内部实现决定的!!!