spring学习笔记.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
spring 学习笔记
【篇一:spring 学习笔记】
4.主要内容:
从下向上看spring 的主要内容:
test :spring 支持junit 单元测试
核心容器(ioc) :bean(bean 工厂,创建对象)、core( 一切的基础)、context( 上下文)、spel(spring 的表达式语言);
aop :aop 、aspects
对数据访问的支持:jdbc 、orm 、transaction 、jms(java 邮件服务)
对web 的支持:spring mvc
5.ioc--inversion of control 控制反转:
首先引用一篇文章的内容,简单了解一下dao 和service 层,controller 层、view 层(),另一篇文章对spring ioc 设计思想的总
结比较全面和通俗易懂; 第一步:定义dao 接口userdao package cn.sxt.dao;// 降低耦合性public interface userdao
{ public void getuser();} 第二步:定义dao 接口的实现类userdaomysqlimpl 和userdaooracleimpl userdaomysqlimpl:
package cn.sxt.dao.impl;import erdao;public
class userdaomysqlimpl implements userdao { @override
public void getuser(){ system.out.println(mysql 获取用户数
据);}userdaooracleimpl:
package cn.sxt.dao.impl;import erdao;public
class userdaomysqlimpl implements userdao { @override
public void getuser(){ system.out.println(mysql 获取用户数据);}
第三步:定义service 层接口userservice ,实现具体的业务
package cn.sxt.service;public interface userservice { public void getuser();} 第四步:
定义service 接口的实现类
userserviceimpl,service 层的业务实现,具体要调用到已定义的
dao 层的接口
我们传统的javase 设计思想,代码是这样组织的:我们直接在对象内部(应用程序本身)通过new 进行创建对象,是程序主动去创建依赖对象
package cn.sxt.service.impl;import erdao;import
erservice;public class userserviceimpl
implements userservice{ // 直接依赖(耦合) private userdao
userdao=new userdaomysqlimpl(); @override public void
getuser(){ userdao.getuser();} 在我们的测试类test( 可以理解成客
户端)中
package cn.sxt.test;import
erdaomysqlimpl;import
erdaooracleimpl;import
erserviceimpl;// 原来是在userserviceimpl
中创建userdao 对象(应用程序本身)//现在是客户端(调用端)来创建public class test { public static void main(string
args[]){ userserviceimpl userservice=new userserviceimpl();
userservice.ge
tuser();} 如果需要替换dao 接口的具体实现类的时候,我们需要将userserviceimpl 中的
private userdao userdao=new userdaomysqlimpl(); 修改为:
private userdao userdao=new userdaooracleimpl(); 控制反转(ioc) 的设计思想,我们不需要应用程序本身来创建对象,而是将创
建对象的任务交付给ioc 容器:此时,我们在userserviceimpl 可以这样编写代码
package cn.sxt.service.impl;import erdao;import
erservice;public class userserviceimpl implements userservice{ // 直接依
赖(耦合) // private userdao
userdao=new userdaomysqlimpl(); // 瞬间隔离开来private
userdao userdao=null; public void setuserdao(userdao
userdao) { erdao = userdao; @override public void
getuser(){ userdao.getuser();} 添加一个set 方法,当调用端需要
创建对象的时候,创建具体实现类的对象,此时我们在test 类
中就可
以这样组织代码:package cn.sxt.test;import
erdaomysqlimpl;import
erdaooracleimpl;import
erserviceimpl;// 原来是在userserviceimpl
中创建userdao 对象(应用程序本身)//现在是客户端(调用端)来创建public class test { public static void main(string
args[]){ userserviceimpl userservice=new userserviceimpl();
userservice.setuserdao(new userdaomysqlimpl());