案例48-crm练习利用spring管理service和dao层的对象
1 导包


2 将 Service 对象以及 Dao 对象配置到 spring 容器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--注册dao层对象到容器中 -->
<bean name="userDao" class="www.test.dao.impl.UserDaoImpl"></bean>
<bean name="linkManDao" class="www.test.dao.impl.LinkManDaoImpl"></bean>
<bean name="customerDao" class="www.test.dao.impl.CustomerDaoImpl"></bean>
<!--注册service层对象到容器中 -->
<bean name="userService" class="www.test.service.impl.UserServiceImpl">
<property name="ud" ref="userDao"></property>
</bean>
<bean name="linkManService" class="www.test.service.impl.LinkManServiceImpl">
<property name="cd" ref="customerDao"></property>
<property name="lmd" ref="linkManDao"></property>
</bean>
<bean name="customerService" class="www.test.service.impl.CustomerServiceImpl">
<property name="customerDao" ref="customerDao"></property>
</bean>
</beans>
注意对象中需要有对应的属性才能注入。
package www.test.service.impl; import www.test.dao.CustomerDao;
import www.test.dao.LinkManDao;
import www.test.dao.impl.CustomerDaoImpl;
import www.test.dao.impl.LinkManDaoImpl;
import www.test.domain.Customer;
import www.test.domain.LinkMan;
import www.test.service.LinkManService;
import www.test.utils.HibernateUtils; public class LinkManServiceImpl implements LinkManService { private CustomerDao cd;
private LinkManDao lmd;
public void save(LinkMan lm) {
//打开事务
HibernateUtils.getCurrentSession().beginTransaction(); try {
//1 根据客户id获得客户对象
Long cust_id = lm.getCust_id();
Customer c = cd.getById(cust_id);
//2 将客户放入LinkMan中表达关系
lm.setCustomer(c);
//3 保存LinkMan
lmd.save(lm);
} catch (Exception e) {
e.printStackTrace();
//回滚事务
HibernateUtils.getCurrentSession().getTransaction().rollback();
}
//提交事务
HibernateUtils.getCurrentSession().getTransaction().commit(); }
public CustomerDao getCd() {
return cd;
}
public void setCd(CustomerDao cd) {
this.cd = cd;
}
public LinkManDao getLmd() {
return lmd;
}
public void setLmd(LinkManDao lmd) {
this.lmd = lmd;
} }
3 web.xml配置容器随项目的启动而启动
<!-- 可以让spring容器随项目的启动而创建,随项目的关闭而销毁 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 指定加载spring配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
4 在 Action 中获得容器中的对象
//=============================================================
//获得spring容器=>从Application域获得即可 //1 获得servletContext对象
ServletContext sc = ServletActionContext.getServletContext();
//2.从servletContext中获得ApplicationContext容器
WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sc); //3.从容器中获得CustomerService
CustomerService cs = (CustomerService) ac.getBean("customerService"); //============================================================
案例48-crm练习利用spring管理service和dao层的对象的更多相关文章
- 关于controller,service,dao层的问题记录
出错写法: 1>.AlarmRecordController art=new AlarmRecordController(); 2>.private static SystemServi ...
- 浅谈service、DAO层引入(转)
转自 http://www.4u4v.net/mvc-simple-enough-on-the-introduction-of-service-dao-layer.html MVC是web开发中常见的 ...
- service和Dao层有什么关系
Dao层:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类 ...
- 【service调用dao层传参的三种方式】
第一种方案:默认数组角标: service Public User selectUser(String name,String area); mapper: <select id="s ...
- 深入理解Spring Redis的使用 (六)、用Spring Aop 实现注解Dao层的自动Spring Redis缓存
摘要: 主要针对Dao层的一些数据库查询的操作,数据实时性不强,直接加入缓存.当缓存中有的时候,就使用缓存中的数据.这样的方法,最终仅仅使用一个注解实现.对于之前的hibernate二级缓存使用,比较 ...
- model、dao、 service 和Comtroll层的关系
首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
- 拦截器通过Spring获取工厂类,注入bean对象
// 这里需要注意一点,我们在拦截器内无法通过SpringBean的方式注入LoggerJPA,我只能通过另外一种形式. /** * 根据传入的类型获取spring管理的对应dao * @param ...
- 利用工厂模式实现serviec层和dao层解耦
利用工厂模式实现serveice和dao层的解耦,这样就可以不用在service层实例化dao层的对象,当dao层代码发生改变的时候(数据库实现发生改变)直接修改配置文件就不用改变service层的代 ...
- java service domain dao 分层思路
今天在开发项目的时候,对项目的java后台的分层有一些看法: 首先,鼓励使用service domain dao 层分层设计概念. 其次,对几层作用的理解: 第一:dao层操作单表,不涉及复杂逻辑,主 ...
随机推荐
- 原型(Prototype)模式
一. 原型(Prototype)模式 原型模式的用意是:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象. 从孙大圣的手段谈起 孙悟空在与黄风怪的战斗中 ...
- 人力资源管理 winform C#
主旨思想:数据库(增,删,改,查) 资源管理器目的:实现基本人员信息 存储,调用,查看头像,修改内容. 注意事项: 1.建立两个表格 (人员表(cold,name,bumen,phone,t ...
- C#帮助类:MD5加密
/// <summary> /// MD5加密 /// </summary> public class Md5 { /// <summary> /// MD5加密 ...
- [Algorithm]查找
一.查找的算法 1.顺序查找 1 int Search_Seq( SeqList L, ElemType elem ) 2 { 3 L.elem[0] = elem; 4 for ( int i = ...
- 1235: 入学考试[DP]
1235: 入学考试 [DP] 时间限制: 1 Sec 内存限制: 128 MB 提交: 37 解决: 12 统计 题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近 ...
- EF进阶篇(二)——CRUD
前言 不写前言了... 内容 我们都知道我们修改的实体状态添加到上下文里面,然后上下文根据实体状态生成相应的SQL执行脚本,去隐式执行到数据库中.(屏幕前的你暂且这样理解吧,因为小编语文没有学好,太通 ...
- BUAA_OO_电梯系列
电梯作业 第一次作业和第二次作业 由于我第一次作业给傻瓜电梯写了捎带所以第一次第二次作业差不多 电梯运行一个线程Elevator,输入控制一个线程Call 一个物理电梯控制表可以完成移动和进出人功能, ...
- minizip -基于zlib开源代码库
转载:https://www.topomel.com/archives/979.html 一.minizip 是一套用来压缩和解压文件的工具,其基于zlib开源代码库. 开源代码下载链接:http:/ ...
- 配置YOLO2(ubuntu16.04+cuda8.0+opencv3.1.0)
要求已经安装好了CUDA 8.0 以及OpenCV3.1.0 YOLO官方网站 配置darknet git clone https://github.com/pjreddie/darknet cd d ...
- flask简单了解
Flask简介: Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,djang ...