當service有多個接口時,如果用
@Autowired
private TestService service;
就會報異常,告訴我們 他的實現只能有一個
所以需要自己去new不同的實現類,但是在這裏因爲我在serviceimpl中我們獲取dao層也是用註解形式獲取的,這裏也會報異常,表示dao爲空,這裏dao層也不能用註解獲取,這裏在網上找到了獲取dao的方法
@Component
public class SpringBeanUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
SpringBeanUtils.applicationContext=applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
public static T getBean(String name,Class requiredType){
return applicationContext.getBean(name, requiredType);
}
}
創建這個工具類,然後在 spring-mvc.xml中添加
<bean id="springBeanUtils" class="com.dnkj.nms.util.SpringBeanUtils"/>
然後獲取dao的方法修改一下,這裏還需要注意,原先用的@service註解要去掉
//原先是這樣寫的
@Autowired
private test1 test;
//改爲
private test1 test=(test1) SpringBeanUtils.getBean("test1");