1.service层注入DAO
1)service接口实现层中,定义想要在service中注入得对象,定义成私有变量。
2)配置applicationContext.xml文件
在bean adminService 中要定义property属性。因为adminService中包含了adminDAO对象。name的值就是在service中定义得变量名,ref值是在配置文件中定义的bean的id。
在bean adminDAO中一定要定义sessionFactory属性,同时在adminDAO类中也要定一sessionFactory对象,以获取session对象。
这样子就设置OK了。tomcat在启动时会自动调用set方法进行注入。
要注意将对象交给spring容器管理后,就不能在手动new实例,否则用手动new出来的实例来调用其对象时会报空指针异常。举个例子,加入我在工程得其他地方手动new了一个adminService对象,然后用这个对象去调方法,而这个方法中又需要adminDAO对象时,adminDAO这时是为空的。
public class AdminServiceImpl implements AdminService{
private AdminDAO adminDAO;
public void setAdminDAO(AdminDAO adminDAO) {
this.adminDAO = adminDAO;
}
@Override
public boolean isExit(String username, String password) {
return adminDAO.isExit(username, password);
}
@Override
public boolean isAdmin(Admin admin) {
return adminDAO.isAdmin(admin);
}
}
在其他地方
AdminService adminService = new AdminServiceImpl();
adminService.isAdmin(admin);
这个时候isAdmin(Admin admin)方法中会报空指针异常。因为adminDAO没有被注入。
2.jsp页面中使用bean
1)首先导入相应包
<%@page import="org.springframework.context.ApplicationContext"%>
<%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
2)
<%
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(application);
想使用得bean类名 变量名 = (bean名) context.getBean("applicationContext.xml中bean的id");
%>
3.filter中注入
1)filter声明要注入的对象,设置set方法
2)配置applicationContext.xml文件
3)配置web.xml文件
<param-name>targetBeanName</param-name>
<param-value>loginFilter</param-value>
</init-param>
value值是自己定义得filter的名字。
大功告成