Spring学习
一、Spring 框架的相关介绍
1.1、Spring 框架的作用:
Spring是一个容器性质的框架.可以管理Bean对象的创建和销毁。
Spring容器具有IoC和AoP特性。
1.2、Ioc和Aop的概念
IoC : Inverse of Controll 反向控制或控制反转。
AoP : Aspect of Programming 切面编程。
1.3、Spring容器的对象管理
引入spring.jar和commons-logging.jar两个基本包。
1、创建容器配置文件,添加<bean>的定义
<bean id="别名" class="包名.类名"/>
2、创建容器对象,获取bean对象
ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml"); ctx.getBean("别名");
1.4、使用工厂方式创建对象
1、容器通过反射创建
2、工厂方法
3、静态工厂方法
1.5、对象的生命周期
1、对象创建时机
默认是在容器创建时,将对象创建出来。
可以在<bean/>元素中使用lazy-init="true",将该对象指定为使用
时创建。
2、指定对象初始化和销毁方法
可以在<bean/>元素中使用init-method="方法名"指定初始化方法
可以在<bean/>元素中使用destroy-method="方法名"指定销毁方法,次属性只对单例模式有效。
init方法在创建对象时执行,destroy方法在销毁容器时执行。
3、默认情况下,容器创建的对象的模式是一个单例模式。
可以在<bean/>元素中使用scope指定创建模式.默认为singleton,可以指定为prototype。
4、如果应用于Web环境中,可以指定为request,session,global session。
1.6、DI(依赖注入) Dependence Inject
1、setter方法注入(推荐使用)
<property name="personDao" ref="personDao2"/>
2、构造方法注入
<constructor-arg index="0" ref="personDao">
</constructor-arg>
3、注解方式注入
二、集合属性注入
2.1、常用注入类型属性值
注入Set,List,Map,Properties类型的属性值
2.2、注解方式配置
注解可以简化XML配置.
1、自动扫描(引入common-annotation.jar包)
a、首先在spring主配置文件中添加 <context:component-scan base-package="包路径"/>
b、在class中使用注解,指定哪些Bean被纳入容器。
@Component、@Controller、@Service、@Repository
注意 : 扫描的组件默认别名为"类名首字母小写",可以在注解中指 定别名,格式为:@Service("别名")
2、生命周期控制及scope创建模式
@PostConstruct 等价于<bean/>元素中的init-method
@PreDestroy 等价于<bean/>元素中的destroy-method
@Scope("prototype")等价于<bean/>元素中的scope="prototype"属
性。
3、注入
a、 @Autowired : 按类型匹配注入.如果需要按照名称,可以使用@Qualifier("personDao")指定Bean别名。
@Autowired(required=false) : required属性表示该属性是否必须注入一个对象。
b、@Resource : 默认先按名称,再按类型.如果需要按照名称,可以使用@Resource(name="personDao")。
注意:如果单独使用(2),(3)注解,需要在spring配置中添加。
<context:annotation-config/>
如果使用(1),(2),(3)注解,只需要指定自动扫描配置就可以。
<context:component-scan base-package="包路径"/>
c、AOP
AOP:面向切面编程.是对OOP编程的提升,可改善程序结构。
主要思想是将共通处理封装成切面对象,利用Spring容器将切面对象 作用到某一批目标对象之上。当执行目标对象方法时,会执行切面对象的功能。
相关概念
1、 切面:用于封装共通处理(即关注点),将来用于横切多个目标对象。
2、 连接点:程序在调用时的某个特定点,比如方法调用或者异常处理。
3、切入点: 连接点的集合,一个连接点集合的表达式(与正则表达式相似)。
4、通知:在连接点上执行的动作,比如前置通知,后置通知,异常通知,环绕通知,最终通知。
5、织入:把切面连接到其他应用程序类型或对象上.该过程在运行时完成。
6、目标对象:目标对象。
7、AOP代理:Spring容器会为每一个目标对象动态创建一个AOP代理对象。
2.3、AOP示例(注意:引入
aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1_3.jar)。
a、execution - 匹配方法执行的连接点,这是你将会用到的Spring的最主要的切入点指示符。
b、execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)
c、任意公共方法的执行: execution(public * *(..))
任何一个名字以“set”开始的方法的执行: execution(* set*(..)) d、 AccountService接口定义的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
e、 在service包中定义的任意方法的执行:
execution(* com.xyz.service.*.*(..))
f、 在service包或其子包中定义的任意方法的执行:
execution(* com.xyz.service..*.*(..))
2.4、AOP注解配置
1、在spring配置文件中启用AOP注解: <aop:aspectj-autoproxy/> 2、编写切面组件,使用以下注解定义切入点,通知等: @Aspect : 将当前类指定为切面组件 @Pointcut : 定义切入点 @Around("切入点引用") @Before("切入点引用") @After("切入点引用") @AfterReturning(pointcut="切入点",returning="参数名") @AfterThrowing(pointcut="切入点",throwing="参数名")
2.5、切入点定义
1、execution表达式 : 匹配方法的连接点。 (modifiers-pattern? ret-type-pattern execution
declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)
2、bean表达式 : 匹配容器中bean对象的id或name属性值
bean (idOrNameOfBean)
3、within表达式: 匹配某一个或某一批特定类型within(包名.类
型)
示例1:在com.xyz.service.DeptService接口中的任意连接点 within(com.xyz.service.DeptService)
示例2:在service包中的任意连接点 within(com.xyz.service.*) 示例3:在service包或其子包中的任意连接点 within(com.xyz.service..*) 4、this和target : 匹配某一个类型实例的任意连接点.与within
区别在于不允许使用通配符。
this(代理对象类型),target(目标对象类型)。 示例1 : 实现了AccountService接口的代理对象的任意连接点。 this (com.xyz.service.AccountService) 示例2 : 实现AccountService接口的目标对象的任意连接点。 target (com.xyz.service.AccountService) 5、args表达式 : 匹配方法参数类型的连接点 args (参数类型) 示例1 : 任何一个只接受一个参数,并且运行时所传入的参数 是Serializable 接口的连接点 args (java.io.Serializable) 6、以上表达式可以使用运算符组合 ||,&&,!,and,or,not
二、总结
3.1、Spring框架作用
Spring框架提供了一套完整的企业级解决方案.基于该框架可以整合现有流行的Struts,Hibernate等框架.可以降低各层组件之间的依赖性.
3.4、Spring框架对JDBC的支持
1、引入数据库驱动和dbcp连接池的jar包。
commons-dbcp.jar,commons-pool.jar,commons-collections.jar,mysql-connector-java-5.1.6-bin.jar。
2、在spring配置文件中添加dataSource的定义。
3、编写DAO组件,使用JdbcTemplate工具类。
4、在spring配置文件中添加dao定义,注入dataSource对象。
《Spring 从入门到精通》的总结
第一部分 Spring 入门
第一章 Spring概述
总体上讲解了Spring框架
第二章 开始Spring之
讲述了一个简单的Spring实例
第二部分Spring 技术祥解
第三章 Spring 基础概念、
反向控制/依赖注册:
反向控制:
依赖注册:
三种注入方式: 接口注入 Set注入 构造注入
实例演示:
使用哪种注入方式:
第四章 Spring 核心容器
bean的定义及功能:
bean 的基础知识 : id class Singleton depends-on
bean的属性 null
bean 的生命周期 : 定义 初始化(2) 使用
销毁(2)
ref的属性指定依赖的三种模式 : local Bean Parent
比较 bean自动装配模式:byName byType constructor autodetect no
总结
bean依赖检查模式:simple object all none 总结
集合注入方式 : List Set Map Properties 总结
bean 管理 : 使用BeanWrapper管理 Bean 使用BeanFactory
管理Bean
使用ApplicationContext管理Bean
ApplicaitonContext更强的动能 : 国际化支持 资源访问
事件传递
第五章 Spring 的 AOP
AOP基本思想:认识 AOP AOP与OOP对比分析
AOP与JAVA的代理机制
输出日志的是实例代码:通用的日志输入方法 通过
面向接口编程实现日志输出 用java的代理机制进行日志输出 Aop的三个关键概念: 切入点(Pointct) 通知(Advice) Advisor Spirng的三种切入点: 静态切入点 动态切入点 自定义切入
点 SPring的通知(ADvice): Interception
Around通知 Before通知 after Returning通知 Throw通知 Introduction通知 Spring 的Advisor : 用
PROXYFACTORYBEAN创建AOP :使用PROXYFACTORYBEAN代理目标类的所有方法 使用PROXYFACTORYBEAN代理目标类指定方法 正则表达式 简介
把输出日志的实例改写成用SPRING的AOP 来实现: 采用 INTERCEPTION AROUND通知的形式实现 采用BEFORE通知的形
式实现采用AFTER RETURNING通知的形式实现 采用THROW通知
形式实现 SPRNG 中的良种代理方式: JAVA 动态代理
CGLIBE代理 SPRING中的自动代
理: AOP 的实
例:
第六章 Spring 事务处理
简述事务处理: 事务的基本概念 事务的处理特性
事务处理的三种注入方式:关系型数据库事务处理 传统的JDBC事务
处理
分布式事务处理
Spring 的事务处理: Spring 事务处理概述 编程式事务处理
声明式事务处理
用编程式还是声明式事务处理:
第七章 Spring 持久层封装
传统的JDBC数据库访问技术 :
通过XML实现DataSource注入 :使用DBCP连接池
使用Spring自带的DriverManagerDataSource 使用Tomcat提
供的 JNDI
使用JdbcTemplate访问 : 数据 Template模式简
介
事务处理TransactionTtemplate的实现方式 JdbcTempate
的实现方式
使用JdbcTemplate查询数据库 使用
JdbcTemplate更改数据库
使用ORM工具访问数据:ORM简述 使用Hibernate 使用iBatiks
第八章 Spring 的WEB框架
第九章 Spring 的定时器
定时器简述 :
定时器的两种实现方式 :
Timer Quartz 两种方式的比较
利用Spring简化定时任务的开发 :在Spring 中使用Timer实现定时器
在Spring中使用Quartz实现定时器
第三部分 Spring与其他工具整合应用
第十章 Spring与Struts的整合
Struts介绍 : Struts的历史 Struts体系结构
Struts的下载: 下载Struts 配置Struts
Jsp页面的 Struts实例:
Struts的主要类 :ActionServlet Action ActionMapping ActionForm
DispatchAction
国际化支持:
Struts的自定义的标签 : Bean标签 Logic标签 Html标签 Spring 与Struts整合: 通过 Spring的ActionSupport类
通过 Spring 的DelegatingRequestProcessor类 通过Spring的DelegatingActionProxy类 比较三种整合方式
编写一个注册的例子:
第十一章 Spring 与Hibernate的整合
Hibernate 介绍:
Hibernate的下载 和配置:下载Hibernate 配置Hibernate
编写一个Hibernate的简单的实例:
Hibernate的配置:
Hibernate的映射:集合映射 组件映射 关联映射 继承映射 Hibernate 的工具:
Hibernate的几个主要简介: Configuration (管理Hibernate) SessionFactory( 创建 Session) Session(提供Connection)
通过XML来整合Spring和Hibernate :
用Struts , Hibernate ,Spring 编写一个实例 :
第十二章 在Spring 中使用Ant
第十三章 在Spring 中使用Junit
第四部分 Spring实例
第十四章 用Spring实现新闻发布系统实例
1接口介绍1.1IobjectFactoryIObjectFactory是初始化、配置及管理对象的实际容器(按:它是所有容器的父接…
Spring春天Spring主要的两个功能:IOC控制反转/依赖注入AOP面向方面变成Spring是完全面向接口的设计,主要管理H…
SpringSpring基本配置1.spring的依赖包配置a)SPRING_HOME/dist/spring.jarb)SPRI…
传统的J2EE应用中,事务管理是跟EJB绑定在一起来的,那个时候大部分人使用EJB的LocalSLSB仅仅是为了使用它的声明式事务…
Springbeanfactory:?BeanFactory是产生和管理bean的容器?Tomcat可以看成是一个bean的容器S…
《Spring从入门到精通》的总结第一部分Spring入门第一章Spring概述总体上讲解了Spring框架第二章开始Spring…
一.Spring的作用1.帮助我们产生对象2.帮助我们管理对象3.帮助我们管理对象之间的关系二.Spring配置文件的读取方式(1…
Spring要点总结一、AOP(Aspect-OrientedProgramming):面向层面(方面)编程1、代理的两种方式:静…
30.31.32.33.34./entryentrykey=map3refbean=student//entry/map35./p…
1.你是如何理解控制反转和依赖注入的?Don’tcallme,wewillcallyou.你需要的对象以及这些对象依赖的其他对象都…
国内访学学者学习总结20xx年x月至20xx年x月期间,有幸得到华师大职业教育与成人教育研究所博导、教授马庆发先生的指导,从事高等…