我目前有一个application-context.cml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd"
default-autowire="byType">
<context:annotation-config />
<tx:annotation-driven />
<bean class="app.bl.facade.impl.DishFacadeImpl" />
我正试图自动装配它:
@Autowired
private DishFacade dishFacade;
public List<Dish> getEvents() {
System.out.println(dishFacade);
return dishFacade.getAll();
}
我打印出的结果是null
,我无法弄明白为什么。
答案 0 :(得分:0)
假设您的包裹为app.bl.facade
,您必须将此标记放在application-context.xml
<context:component-scan base-package="app.bl.facade" />
以上XML标记将执行自动扫描。应该创建为bean的每个类都使用正确的stereotype
注释进行注释,如@Component
(对于一般bean)或@Controller
(对于servlet控制器)或@Repository
(对于DAO类)或@Service
,这些类应放在相同的基础包app.bl.facade
下。
如果满足以上条件,那么spring将自动找到所有这些并为每个创建一个bean。
答案 1 :(得分:0)
您的默认自动接线模式为&#34; byType&#34;。对于这种类型的自动装配,使用类类型。因此,在spring bean配置文件中只应该为此类型配置一个bean。
所以你应该自动连接DishFacadeImpl
而不是DishFacade
,我认为这是接口。
This可能会有所帮助。