Spring课堂笔记.docx

上传人:b****6 文档编号:8117280 上传时间:2023-01-28 格式:DOCX 页数:62 大小:797.27KB
下载 相关 举报
Spring课堂笔记.docx_第1页
第1页 / 共62页
Spring课堂笔记.docx_第2页
第2页 / 共62页
Spring课堂笔记.docx_第3页
第3页 / 共62页
Spring课堂笔记.docx_第4页
第4页 / 共62页
Spring课堂笔记.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

Spring课堂笔记.docx

《Spring课堂笔记.docx》由会员分享,可在线阅读,更多相关《Spring课堂笔记.docx(62页珍藏版)》请在冰豆网上搜索。

Spring课堂笔记.docx

Spring课堂笔记

 

Spring部分学习笔记

 

讲师:

梁建全liangjq@

 

目录

Spring部分学习笔记1

DAY013

一、Spring框架的作用和好处3

二、Spring框架对Bean组件的管理3

1、使用方法:

3

2、Spring容器对Bean组件的管理3

3、Spring框架的IoC机制3

A.DI(依赖注入)3

B.各种类型数据的注入3

C.IoC(InverseofController,控制反转)3

三、AOP概念3

1、什么是AOP?

3

2、AOP基本应用3

A.引入AOP开发包3

B.定义一个Bean组件(方面组件),封装共通处理3

C.在applicationContext.xml中定义AOP配置3

3、AOP相关概念3

4、通知类型3

5、切入点表达式3

6、AOP练习完成记录用户操作日志示例。

3

7、编写一个AOP示例,异常处理方面3

DAY023

一、Log4j工具介绍3

1、体系结构3

2、消息级别3

二、Spring注解配置3

1、组件的自动扫描3

2、AOP注解标记3

3、(异常处理)案例重构3

4、XML和注解两种配置形式3

DAY033

一、Spring对数据访问层的支持3

1、提供了事务管理3

2、提供了DAO实现支持3

3、如何整合JDBC技术3

4、如何整合Hibernate技术3

5、Spring整合Hibernate后,如何使用Hibernate中的Session对象3

二、Spring如何与Struts2框架整合3

1、添加Struts2框架3

2、编写Action,需要使用DAO组件采用DI方式注入3

3、Spring容器中定义Action组件,注入DAO3

4、在struts.xml中定义Action组件和请求配置3

5、在web.xml中添加配置,在启动tomcat时,实例化Spring容器3

DAY043

一、Spring与Struts2、Hibernate整合3

1、SSH工作流程3

二、ssh开发步骤3

1、引入开发包3

2、编写实体类和映射文件hbm.xml(可以利用MyEclipse工具)3

3、编写DAO组件3

4、在Spring配置文件中定义DAO,SessionFactory,DataSource按以下关系注入3

5、添加Struts2配置文件及控制器配置3

6、编写Action组件,需要使用Service或DAO时,采用名称匹配规则注入3

7、在struts.xml中添加Action组件配置(代码在5、中)3

8、修改jsp,利用struts2标签完成显示3

9、修改web.xml,添加Listener配置,实例化Spring容器3

10、按ssh-2图示检查一下流程。

3

三、Spring事务管理3

1、声明式事务管理3

2、编程式事务管理(了解)3

3、课堂案例代码3

DAY053

一、采用注解方式实现SSH整合***3

1、组件自动扫描3

2、如果编写了AOP功能,可以使用AOP注解3

3、Spring事务管理注解3

二、Spring框架整体结构3

Spring提供了很多特性,可以分为以下6个模块3

三、Spring动态代理实现3

四、Spring框架的MVC实现3

1、SpringMVC的体系结构3

2、了解SpringMVC工作流程3

3、编写第一个SpringMVC示例3

 

Day01

一、Spring框架的作用和好处

Spring框架提供了一个容器,该容器可以管理应用程序的组件,还提供了IoC和AoP机制,实现组件之间解耦,提高程序结构的灵活性,增强系统的可维护和可扩展性。

在SSH整合开发中,利用Spring管理Service、DAO等组件,利用IoC机制实现Action和Service,Service和DAO之间低耦合调用。

利用AoP机制实现事务管理、以及共通功能的切入等。

功能是整合,好处是解耦。

二、Spring框架对Bean组件的管理

Spring容器可以创建、销毁Bean组件对象。

(等价于工厂模式)

1、使用方法:

Ø引入spring核心开发包(spring.jar,commons-logging.jar)

Ø在src下添加spring容器配置文件applicationContext.xml

Ø将Bean组件在applicationContext.xml中定义

Ø在代码中,实例化spring容器对象

ApplicationContextac=newClassPathXmlApplicationContext("容器配置文件");

Ø获取容器中的Bean对象

ac.getBean("标识符");

2、Spring容器对Bean组件的管理

Ø默认情况下,Bean组件采用单例模式创建,只有一个对象。

在Spring容器实例化时创建。

Ø利用init-method属性可以指定初始化方法。

该方法在构造方法执行后自动调用。

Ø利用destroy-method属性可以指定销毁方法。

该方法在对象销毁前执行。

可以通过AbstractApplicationContext的close()方法触发。

(仅对scope="singleton"有效)

Ø利用lazy-init属性可以将单例对象创建时机延迟到ac.getBean()方法。

Ø利用scope属性可以指定Bean对象的创建模式。

默认值为singleton(单例,每次调用getBean返回同一个对象),还可以使用prototype(原型,每次调用getBean返回一个新对象)。

在Web环境应用,可以扩展request和session等属性值。

可以将Bean对象与request或session绑定在一起。

注意:

当将scope指定为非单例模式(非singleton)时,对象创建时机改为调用getBean方法。

--------------------对象的创建模式---------------------------

利用scope属性控制,可以使用singleton(默认值),prototype,

request,session等值。

-------------------对象创建时机--------------------------

singleton模式默认在容器实例化时创建。

其他模式在调用getBean方法时创建。

-------------------初始化和销毁-----------------

利用init-method指定初始化方法,在构造方法调用后执行。

利用destroy-method指定销毁方法,在销毁对象之前执行。

该属性仅对scope="singleton"模式有效。

---------------控制单例模式对象创建时机---------------

默认情况下,单例对象是随着容器创建。

但可以利用lazy-init="true"将对象创建时机延迟到第一次getBean方法。

该属性仅对scope="singleton"模式有效。

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

tx="http:

//www.springframework.org/schema/tx"

xmlns:

aop="http:

//www.springframework.org/schema/aop"

xmlns:

context="http:

//www.springframework.org/schema/context"

xmlns:

jee="http:

//www.springframework.org/schema/jee"

xsi:

schemaLocation="http:

//www.springframework.org/schema/tx

http:

//www.springframework.org/schema/tx/spring-tx-2.5.xsd

http:

//www.springframework.org/schema/aophttp:

//www.springframework.org/schema/aop/spring-aop-2.5.xsd

http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-2.5.xsd

http:

//www.springframework.org/schema/context

http:

//www.springframework.org/schema/context/spring-context-2.5.xsd

http:

//www.springframework.org/schema/jee/spring-jee-2.5.xsd">

class="tarena.dao.JdbcUserDAO">

--定义DI依赖注入关系-->

3、Spring框架的IoC机制

A.DI(依赖注入)

例如A--调用-->B,可以说A组件依赖于B组件。

Spring提供了一些方法,将B组件给A注入,从而建立起对象关联。

Spring提供了以下注入方法:

(接口注入,本章不讲)

Øsetter方式注入(推荐)

采用属性的setter方法,注入Bean组件对象

--定义DI依赖注入关系-->

publicclassUserServiceImpl{

//采用setter方式注入DAO,Spring在创建完Service对象后,自动执行

privateUserDAOuserDao;

publicvoidsetUserDao(UserDAOuserDao){this.userDao=userDao;}

publicUserServiceImpl(){System.out.println("-----创建service对象------");}

publicvoidregist(){userDao.save();}

}

publicclassTest3{

publicstaticvoidmain(String[]args){

Stringconf="applicationContext.xml";

AbstractApplicationContextac=newClassPathXmlApplicationContext(conf);

//获取容器中的service

UserServiceImplservice=(UserServiceImpl)ac.getBean("userService");

service.regist();

}

}

Ø构造方式注入

在使用一方定义一个接口类型变量,添加一个带参数的构造方法

在applicationContext.xml的Bean定义中指定注入配置

代码片段:

publicclassUserServiceImplimplementsUserService{

//利用构造方法注入

privateUserDAOuserDao;

publicUserServiceImpl(UserDAOuserDao){this.userDao=userDao;}

publicvoidregist(){

System.out.println("进行用户注册");

userDao.save();//调用DAO查询

}

publicvoidlogin(){

System.out.println("进行用户登陆");

userDao.findByName();//调用DAO添加

}

}

测试代码片段:

publicstaticvoidmain(String[]args){

String[]conf={"applicationContext.xml"};

ApplicationContextac=newClassPathXmlApplicationContext(conf);

UserServiceservice=(UserService)ac.getBean("userService");

System.out.println(service.getClass().getName());

//调用service方法

service.regist();

System.out.println("---------------");

service.login();

}

applicationContext.xml片段:

--构造方法注入-->

B.各种类型数据的注入

Ø注入Bean对象

使用ref属性指定Bean组件id

Ø注入基本类型数据

注入字符串、数值等数据。

使用value属性指定值。

Ø注入集合类型

注入List、Set、Map、Properties集合

代码片段:

publicclassMessageServiceImplimplementsMessageService{

privateStringmsg;//注入一个字符串

privateintsize;//注入一个数值

privateListfriends;//注入一个List集合

privateSetcities;//注入一个Set集合

privateMapbooks;//注入一个Map集合

privatePropertiesdbParams;//注入一个Properties集合

set方法略……

publicvoidshow(){

//显示消息

System.out.println(msg);

System.out.println(size);

System.out.println("-----List集合列表----");

for(Strings:

friends){System.out.println(s);}

System.out.println("-----Set集合列表----");

for(Strings:

cities){System.out.println(s);}

System.out.println("-----Map集合列表----");

Setkeys=books.keySet();

for(Stringkey:

keys){System.out.println(key+"="+books.get(key));}

System.out.println("-----Properties集合列表----");

SetdbKeys=dbParams.keySet();

for(Objectkey:

dbKeys){

System.out.println(key+"="+dbParams.getProperty(key.toString()));

}

}

}

applicationContext.xml片段:

--利用setter方式注入基本类型-->

">

--利用setter方式注入集合类型-->

Jack

Tom

露丝

北京

上海

广州

root

1234

com.mysql.jdbc.Driver

C.IoC(InverseofController,控制反转)

控制权:

A调用B组件,可以说成A组件拥有控制权。

控制权可以代指对象的创建、初始化、销毁等操作。

控制反转:

是将控制权转移,转移给第三方(Spring容器),当需要改变对象关系时,只需要修改Spring容器注入配置即可。

IoC是一种思想,Spring框架通过DI技术实现了控制反转。

============练习==============

以IoC方式实现UserServiceImpl和JdbcUserDAO|HibernateUserDAO的调用。

UserServiceImpl(userDao)|<---DI(setter注入)---JdbcUserDAO|<---DI(setter注入)---HibernateUserDAO

通过修改DI配置即可改变UserService和UserDAO的关系,因此实现了UserService和UserDAO组件的解耦。

三、AOP概念

1、什么是AOP?

AspectOrientedProgramming面向切面编程。

面向方面编程侧重点是关注方面组件(共通处理部分),可以将方面组件作用到某一批目标对象的方法上。

面向对象编程侧重点是关注对象,如何构建一个对象类型。

面向方面编程是基于面向对象编程的,主要用于改善程序结构,降低组件耦合度。

2、AOP基本应用

A.引入AOP开发包

B.定义一个Bean组件(方面组件),封装共通处理

添加一个aop包,新建一个Bean组件(方面组件)

publicclassLoggerBean{

publicvoidloggerOperation(){

System.out.println("记录用户的操作日志");

}

}

C.在applicationContext.xml中定义AOP配置

首先将方面组件采用元素定义,然后定义下面的AOP配置

config>

//指定目标对象及其方法

pointcutid="标识符1"expression="表达式"/>

//指定方面组件及其切入

aspectid="标识符2"ref="充当方面组件的Id">

//指定切入位置

beforemethod="方面组件的业务方法名"

pointcut-ref="引用pointcut定义的id值,标识符1"/>

aspect>

config>

applicationContext.xml中定义AOP配置:

--采用AOP配置将LoggerBean组件作用到某一批Service的方法上-->

展开阅读全文
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1