ImageVerifierCode 换一换
你正在下载:

Spring2.docx

[预览]
格式:DOCX , 页数:20 ,大小:23.56KB ,
资源ID:25218559      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25218559.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Spring2.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Spring2.docx

1、Spring2SpringSpring是一个开源的控制反转(Inversion of Control,IOC)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。名词解释:一、 控制反转:是指应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转二、 依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中。三、 轻量级与重量级:划分一个应用属于轻量级还是重量级,主要看它使用了多少服务,使用服务越多,容器要为java对象做的工作就越多,必然会影响到应用的发布时间或运行性能。Spring容器提供了很多服

2、务,但这些服务默认是关闭的,当应用需要某种服务的时候,还需要之名将使用该服务,spring默认只使用了spring的核心服务,所以是轻量级的,如果应用使用了spring的大部分服务,则为重量级的。spring的好处:一、 降低组件之间的耦合度,实现软件各层之间的解耦。二、 可以使用容器提供的众多服务,如:事务管理服务、消息服务等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需处理复杂的事务传播。三、 容器提供单例模式支持,开发人员不再需要自己编写实现代码。四、 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。五、 容器提供众多辅助类,使用这些类能够加快应用

3、的开发,如:JdbcTemplate、HibernateTemplate六、 Spring对主流应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等便于应用开发。Spring开发所需的jar文件:一、 必须a) spring.jarb) commons-logging.jar二、 使用切面编程(AOP)所需的jara) Aspectjweaver.jarb) Aspectjrt.jarc) Cglib-nodep-2.1_3.jar三、 使用JSR-250中的注解(如:Resource/PostConstruct/PreDestroy),所需的jara) Commons-

4、annotations.jarSpring的使用:将业务类交给Spring容器管理和维护(通过配置文件中的bean标签来配置)使用业务类时就可以从Spring容器中获取业务类对象Spring的使用步骤:一、 向项目中添加jar包,并创建配置文件a) Bean标签中的id:为bean在spring中起了个名字,该名字是唯一的,不能由特殊字符,专属XML,可以由XML解析器校验b) Bean标签中的name:同样为bean在spring中起个名字,但它可以由特殊字符二、 创建业务类三、 将业务类交给spring容器来管理和维护四、 从spring容器中获得业务类对象,进行操作a) 创建spring

5、容器对象i. (ApplicationContext ctx = new ClassPathXmlApplicationContext(“配置文件的名字”))b) 从spring容器中获得业务对象i. ctx.getBean(“配置文件中bean的名字”)Spring中实例化Bean的三种方式:一、 使用类构造器实例化(默认实例化方式,多数使用)二、 使用静态工厂方法实例化(实例化OrderServiceFactory对象,并调用createOrder方法,获得bean实例)/创建工厂类Public class OrderServiceFactory Public static OrderSe

6、rviceBean createOrder() Return new OrderServiceBean();三、 使用实例工厂方法实例化(创建工厂实例)(根据工厂的实例调用createOrder方法获得Bean实例)/创建工厂类Public class OrderServiceFactory Public OrderServiceBean createOrder() Return new OrderServiceBean();Bean的作用域 Bean的作用域在spring中有五种:1、 singleton:Spring中默认的作用域为sigleton既每次从Spring容器中获得的对象是同一

7、个2、 prototype:每次从Spring容器中获得的对象都是新对象3、 request4、 session5、 global SessionBean的生命周期: Bean在默认作用域中,当容器创建就被创建,若作用域设置为prototype则在通过getBean方法获得对象时实例化,Bean标签的属性: 一、属性1、 id为bean的名字2、 class那个类创建的实例3、 scope:作用域4、 lazy-init:是否进行懒加载初始化,若进行了懒加载初始化则在容器初始化时不创建实例5、 init-method:容器创建类实例时执行的初始化方法(用于初始化资源)6、 destroy-me

8、thod:对象销毁时执行的方法(用于销毁资源)7、 autowire:设置该bean的属性为自动装配,它会将该bean的所有属性进行装配二、子标签(property) 实现依赖注入的标签 属性:1、 name-:表示将要注入给那个属性2、 ref:指定将谁注入到name属性 常用方法: ApplicationContext:3、 getBean()-获得bean对象AbstractApplicationContext: 1、close()-关闭容器Sping的依赖注入方式:1、 构造器注入(通过构造方法注入) 2、 Setter注入(通过set方法注入)(使用property标签完成)a) P

9、roperty注入:(将userDao对象注入到userBiz对象的userDao属性中,userDao属性是UserDao接口类型, 可以在任何地方使用userDao bean对象) b) 使用内部bean注入:(使用内部bean注入只能在本bean中使用内部bean对象) c) 为基本类型注入: d) 集合注入:i. Set集合 sssssssii. List集合 sssssssiii. Properties集合 value1 value2 value3iv. Map集合 3、 使用注解的方式注入依赖对象。(2.0以后提供,就是在类的属性或方法中注入)使用注解方式注入:1、 在xml中加入

10、命名空间:beans xmlns=http:/www.springframework.org/schema/beans xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xmlns:context=http:/www.springframework.org/schema/context!命名空间- xsi:schemaLocation=http:/www.springframework.org/schema/beans http:/www.springframework.org/schema/context http:/www.springf

11、ramework.org/schema/context/spring-context-2.5.xsd http:/www.springframework.org/schema/beans/spring-beans-2.5.xsd2、 打开注解的配置。注册对多个注解进行解析处理的处理器:AutowiredAnnotationBeanPostProcessor(解析Autowired)、CommonAnnotationBeanPostProcessor(解析Resource)!-打开注解的配置-3、 使用注解进行依赖注入,在java中使用Autowired(Spring提供)和Resource(j

12、avaee提供,已经纳入jdk1.6中)都可以将依赖对象注入,区别: Autowired默认按类型装配、Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。Resource的name属性可以指定依赖对象的名称,如果找不到该名称则返回null,如果不设置name属性,则会按照默认的名称查找依赖对象,如果找不到则按类型装配Autowired、Resource可以在属性上使用也可以在setter方法上使用。Autowired private PersonDao personDao/字段上使用Resource (name=personDao)private PersonDao

13、personDao;Autowired /setter方法上使用Public void setPersonDao(PersonDao personDao)Autowired默认是按类型进行装配的,可以通过方法:Autowired Qualifier(“name”)将Autowired改为按名称装配Autowired(required=true)表示必须给该属性注入值,如果没有注入则报异常Autowired(required=false)表示给该属性注入值是可选的,如果没有注入则会注入一个null三、通过在classpath自动扫描方式把组件纳入spring容器中管理(2.5以后提供) 1、在x

14、ml中加入命名空间:beans xmlns=http:/www.springframework.org/schema/beans xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xmlns:context=http:/www.springframework.org/schema/context!命名空间- xsi:schemaLocation=http:/www.springframework.org/schema/beans http:/www.springframework.org/schema/context http:/www.sp

15、ringframework.org/schema/context/spring-context-2.5.xsd http:/www.springframework.org/schema/beans/spring-beans-2.5.xsd2、/打开自动扫描器其中base-package为需要扫描的包(含子包),可以注册基本上所有的注解处理器。3、使用注解方式标注哪些类将要交给spring管理,它的作用和在xml文件中定义bean是一样的。4、在类中的注解方式有四个(在类上标注): Service用于标注业务层组件、 Controller用于标注控制层组件(如struts中的action)、Re

16、pository用于标注数据访问组件,即DAO组件。Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。4、 这时bean的名称默认的为类名并将首字母改为小写,当然我们可以通过设置bean的名称来获得值(Service(“name”)),并且可以在类上通过scope(“prototype”)注解设置bean的作用域范围5、 初始化方法注解:PostConstruct(javaee提供),在方法上面指定这个注解,表示该方法在初始化时执行。6、 销毁方法注解:PreDestroy,在销毁时要执行的方法上面标记AOP一、AOP中的概念: Aspect(切面):指横切性关注

17、点的抽象即为切面,它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面是横切性关注点的抽象。(将要对那些方法进行拦截,拦截后将要做什么,这些就是所谓的横切性关注点) Joinpoint(连接点):所谓连接点是指那些被拦截到的点,在spring中,这些点指的是方法。(既拦截的方法),spring中只支持方法类型的连接点。 Pointcut(切入点):切入点是指我们要对那些joinpoint进行拦截的定义,(既对那些方法进行拦截)添加命名空间: Advice(通知):通知是指拦截到joinpoint之后所要做的事情。通知分为:前置通知(拦截到的方法执行前执行)、后置通知(拦截到的方法执

18、行后执行)、异常通知(当拦截到的方法出现异常时执行)、最终通知(无论方法是否出现异常都会执行)及环绕通知(方法执行前、后都可以执行) Target(目标对象):代理的目标对象 Weave(织入):将aspect应用到target对象并导致proxy对象创建的过程 Introduction(引入):在不修改类代码的前提下,Introduction可以在运行期为类(代理类)动态地添加一些方法或Field.引入命名空间 Spring提供了两种切面声明方式,实际开发中我们可以选用其中一种: 基于XML配置方式声明切面。 基于注解方式声明切面。一、 注解方式:1、注册AOP注解的处理类。 2、使用注解定

19、义切面(定义类,切面类中包含切入点) 3、只用注解定义切入点(定义类中的方法) 4、将切面交给spring进行管理Interceptor.java(切面类)package org.springaop.service.impl;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;imp

20、ort org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;/* * 定义切面 * * */Aspect/将类声明为切面public class MyInterceptor /*定义切入点*/ Pointcut(execution(* org.springaop.service.impl.PersonServiceImpl.

21、*(.)/定义切入点表达式,表示将要对那些方法类中的方法进行拦截 /声明切入点的名称,声明方法和定义一个方法类似,切入点的名称myPoint private void myPoint() /*定义前置通知 Before(myPoint() public void beforeDemo() System.out.println(前置通知); */ /*后置通知*/ AfterReturning(myPoint() public void afterReturningDemo() System.out.println(后置通知); /*最终通知*/ After(myPoint() public v

22、oid afterDemo() System.out.println(最终通知); /*例外通知*/ AfterThrowing(myPoint() public void afterThrowingDemo() System.out.println(例外通知); /* * 获得输入参数的通知 *注解中的参数名称和方法声明的参数名称一致, *而且这时只能拦截到存在一个参数并且参数类型为String类型的方法 * */ Before(myPoint()&args(uname) public void doBefore(String uname) System.out.println(前置通知获得

23、输入参数:+uname); /* * 获得返回值的通知 * * */ AfterReturning(pointcut=myPoint(),returning=result) public void doAfterReturning(String result) System.out.println(获得返回值的后置通知:+result); /* * 获得异常信息的通知 * */ AfterThrowing(pointcut=myPoint(),throwing=e) public void doAfterThrowing(Exception e) System.out.println(获得异常:+e); /* * 环绕通知 * 环绕通知的方法声明部分是固定的,只有方法名和访问权限可以改变 * throws Throwabl

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

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