今天使用spring 注解@Resource的时候,可能是比较少接触过的原因,居然犯了一个极其愚蠢的错误。
我在一个工具类BaseRepository中使用@Resource注入一个SessionFactory,但是在此时工具类时,直接使用
BaseRepository b = new BaseRepository();
b.sessionFactory.openSession();
结果就导致空指针异常
其实就是因为直接new的话,工具类BaseRepository 下使用注解的属性就没有通过spring框架进行属性注入。
Spring框架通过注解注入有两种情况
1.一种是Spring mvc将spring托管给tomcat启动时加载
2.一种是正常的java项目中,通过ClassPathXMLApplicationContext类进行xml的加载同时配置
这里主要讲一下第二种
目前我在第二种中遇到的一个问题就是,其实跟上面所讲的问题是一个样的
注释中的创建Main对象才是正确使用spring注入的方法。
注意
今天在新的项目里面又出现了一个新的问题,主要还是没有注意到在spring中,通过注解注入,必须从第一层开始就要使用注解注入。
今天我就试了一下在第一层的时候是使用new去创建实例,结果对应的该类下面所有的注解都不起作用,使用ClassPathXmlApplicationContext去加载配置文件之后使用context.getBean可以获取到对应的Bean,但是使用注解对应的属性值就一直都是null,就可以考虑可能是出现这种问题。
网友评论