编写的service需要测试下,编写了main来调用,之前都是顺利的,最后测试查找调用数据库的时候出现了报错java.lang.NullPointerException的问题
Lawinfo lawinfo = new Lawinfo();
lawinfo.setgGuid("12345676-ffff-1111-1111-1111111111111");
List<Lawinfo > lawinfolist = lawinfoService.findList(lawinfo); //报错在此处
断点调试后发现是lawinfoService.findList中dao为null
service一般是由Controller调用的,且调用的时候不用手动创建对象
@Autowired
private LawinfoService lawinfoService;//自动注入
private LawinfoService lawinfoService = new LawinfoService( ) ;//手动创建
LawinfoService是继承CrudService的,需要自动注入才能正常。
说白了就是一堆很烦的工作其实是sping帮我们做的,不这么用就得自己写。
@Autowired很多地方都会使用,具体含义规则可以自行百度更官方得定义,但是这个注解需要spring扫描到后注入才能正常工作,如果允许tomcat项目跑起来,在Controller中调用就是正常得,但是如果在main中调用,虽然注解了但是没有被spring注入内容,所以其中得dao是null,引起了报错java.lang.NullPointerException。
解决办法如下:
ApplicationContext springUtilContext = new ClassPathXmlApplicationContext("classpath:spring-Context.xml");
ParseJSON parseJSON=(ParseJSON) springUtilContext.getBean(ParseJSON.class);
JSONinfo json = new JSONinfo();
json = parseJSON.parseJSONWithJSONObject(jsontest1);
第一句话我猜是启动了Spring扫描,第二句对ParseJSON类进行了注入
ParseJSON就是我要测试得类,里面会用到LawinfoService,添加后就能正常从main中运行了。
记得ParseJSON类前要加@Service注解。