Spring 总结Word格式文档下载.docx
- 文档编号:22528664
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:10
- 大小:20.81KB
Spring 总结Word格式文档下载.docx
《Spring 总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Spring 总结Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
2)Spring容器对Bean管理的基本特性*a.Bean对象创建默认支持singleton和prototype两种,即单例和多例。
可以使用scope属性指定,属性//测试容器基本使用publicvoidtest1(){//实例化Spring容器对象Stringconf=/applicationContext.xml;
ApplicationContextac=newClassPathXmlApplicationContext(conf);
//从容器获取Bean对象CostDAOcostDao=(CostDAO)ac.getBean(jdbcCostDao);
costDao.save();
costDao.delete();
}}示例:
beanid=jdbcCostDaoclass=org.tarena.dao.JdbcCostDAO默认值是singleton。
如果应用Web程序中,通过配置可以扩展出request,session等属性值。
b.Bean对象初始化可以通过init-method属性指定方法名。
将来在创建Bean对象时自动调用该方法执行初始化逻辑。
c.Bean对象销毁可以通过destroy-method属性指定方法名。
将来该对象被垃圾回收前自动调用该方法执行资源释放工作。
该属性仅对scope=singleton单例Bean对象有效。
当执行Spring容器close()时,容器会释放Bean单例对象,会触发destroy-method指定的方法。
d.Bean对象创建时机scope=singleton是在容器实例化时创建。
scope=prototype是在getBean()时创建。
lazy-init=true可以将singleton组件创建推迟到getBean方法调用。
利用*4.Spring框架的IOC机制IOC解决两个Bean组件调用问题,可以降低两个Bean组件对象之间的耦合度。
1)IOC概念InverseofController称为控制反转或反向控制。
所谓控制指的是对象的创建、初始化和销毁过程。
当一个组件发生变更后,该逻辑需要相应修改。
控制反转确切讲应该是控制的转移,意思是将控制逻辑由使用一方转移到第三框架或容器负责。
当再发生组件变更后,只需要修改框架或容器配置,不需要修改关联组件。
2)DI概念DependencyInjection依赖注入。
依赖注入技术是Spring实现IoC控制思想的方法。
DI在Spring中两种注入方法:
*a.setter方式有注入依靠set方法将组件对象传入。
--在使用一方添加属性变量和set方法--在使用一方bean定义部分,添加propertyname=属性名ref=要注入的Bean对象id值/property//测试destroy-methodpublicvoidtest3(){//实例化Spring容器对象Stringconf=/applicationContext.xml;
AbstractApplicationContextac=newClassPathXmlApplicationContext(conf);
//释放容器对象--释放Bean对象--触发destory-method方法ac.close();
}//applicationContext.xml特性beanid=jdbcCostDaoscope=singletonlazy-init=trueinit-method=myinitdestroy-method=mydestroyclass=org.tarena.dao.JdbcCostDAO/beanbeanid=addCostActionscope=prototypeclass=org.tarena.action.AddCostAction!
--setter注入配置,将hibernateCostDAO对象给action的setCostDao方法传入--propertyname=costDaoref=hibernateCostDAO/property/beanb.构造方式注入依靠构造方法将组件对象传入。
--在使用一方添加带参数的构造方法--在使用一方bean定义部分,添加constructor-argindex=参数索引ref=要注入的Bean对象id值/constructor-argSpring的DI可以注入各种类型数据,常见的有以下几种:
*a.Bean组件对象注入b.基本数据注入注入一个字符串、数值propertyname=属性名value=值/property3)各种类型的注入c.List集合注入d.Set集合注入e.Map集合注入f.Properties注入========课程要求==========1.掌握Spring容器对Bean组件的创建2.掌握setter方式注入实现IOC控制3.了解各种类型数据的注入4.有时间回顾下Hibernate知识、完成Struts+Hibernate的资费管理功能AOP概念AspectOrientedProgramming面向方面编程。
OOP是面向对象编程,编程侧重点对象。
AOP面向方面编程,侧重点是方面,方面指的是共通处理的组件,需要被其他多个组件调用。
AOP是OOP编程为基础。
AOP主要解决问题是:
共通组件与其他组件以低耦合方式关联。
2.AOP相关概念AOP编程需要涉及以下几个重要概念:
*1)方面(Aspect)指的是共通处理组件,需要作用到其他目标组件的处理方法上的。
*2)切入点(Pointcut)用于指定哪些组件或方法追加方面组件功能。
可以用切入点表达式指定beanid=deleteCostActionscope=prototypeclass=org.tarena.action.DeleteCostAction!
--构造注入配置,将hibernateCostDAO对象给action构造方法的第一个参数传入--constructor-argindex=0ref=hibernateCostDAO/constructor-arg/bean用于指定方面组件和目标组件作用的时机和位置。
4)目标组件(Target)切入点表达式指定的组件就是目标组件。
5)连接点(JoinPoint)切入点是连接点的集合。
连接点指的是方面组件与某一个目标组件相结合的信息。
通过该对象可以获取目标组件类型和方法等信息。
6)动态代理(AutoProxy)Spring框架采用动态代理技术实现AOP机制。
Spring如果使用AOP配置,容器返回的Bean对象是采用动态代理技术生成的一个新类型,该新类型组件在内部会去调用方面组件和原目标组件的功能。
Spring框架采用两种动态代理技术。
a.CGLIB技术(无接口)针对没有接口实现的目标组件。
采用继承方法生成一个子类publicclassAction$$EnhancerByCGLIB$234*3)通知(Advice)extends原Action组件类型{//重写execute业务方法,//调用方面和目标组件功能}b.JDKProxyAPI技术(有接口)针对有接口实现的目标组件。
采用实现原目标接口的方法生成一个类型publicclass新类型implements原目标组件接口{//重写接口业务方法,//调用方面和目标组件功能}4.Spring通知类型通知可以指定方面组件和目标组件的执行顺序,Spring提供了以下5种类型通知。
前置通知(aop:
before)先执行方面处理,再执行目标组件处理2)后置通知(aop:
after-returning)先执行目标组件,没抛出异常,再执行方面组件。
如果目标有异常,不会执行方面组件3)最终通知(aop:
after)先执行目标组件,不管有没有异常,都要执行方面组件。
4)异常通知(aop:
after-throwing)先执行目标组件,如果抛出异常才会执行方面组件。
没有抛出异常不会执行。
5)环绕通知(aop:
around)先执行方面组件前置部分,在执行目标组件,最后执行方面组件后置部分。
等价前置+后置结构。
try{//前置通知执行--方面组件//执行目标组件处理//后置通知执行--方面组件}catch(){//异常通知执行--方面组件}finally{//最终通知执行--方面组件}5.切入点切入点是用一个表达式表示,用于指定目标及其方法。
*1)方法限定可以指定哪些方法启用方面组件功能。
语法:
execution(修饰符?
返回类型方法名(参数列表)throws异常?
)示例1:
匹配容器中所有Bean对象的find开始的方法execution(*find*(..))示例2:
匹配容器中CostDAO组件的find开始的方法execution(*org.tarena.dao.CostDAO.find*(..))示例3:
匹配容器中在dao包中的所有类的所有方法execution(*org.tarena.dao.*.*(..))示例4:
匹配容器中在dao包及其子包中所有类的所有方法execution(*org.tarena.dao..*.*(..))*2)类型限定指定哪些类型组件的所有方法启用方面功能。
within(包名.类型)示例1:
匹配容器中CostDAO组件的所有方法within(org.tarena.dao.CostDAO)示例2:
匹配容器中action包下的所有类的所有方法within(org.tarena.action.*)示例3:
匹配容器中action包及其子包中所有类的所有方法within(org.tarena.action..*)可以通过id属性进行限定,指定哪些id的Bean对象启用方面功能.语法:
bean(id属性值)示例1:
匹配容器中id=jdbcCostDAO的Bean对象的所有方法bean(jdbcCostDAO)*3)Bean名称限定示例2:
匹配容器中所有id以DAO结尾的Bean对象的所有方法bean(*DAO)可以指定方法参数列表限定目标组件和方法。
args(参数列表)示例:
匹配容器中所有Bean的方法,仅有一个参数,而且参数类型是符合List类型的args(java.util.List)4)参数限定注意:
上述限定表达式可以组合应用,利用,||运算符连接。
=======Log4j========log4j.jar工具是apache组织旗下的一个日组件,可以将消息按不同级别不同输出方式记录下来。
log4j工具主要有以下3部分构成1)日志器Logger负责提供输出不同级别消息的方法。
2)输出器Appender负责控制信息输出的方式,例如控制台输出、文件输出等3)布局器Layout负责将消息格式化。
=================引入log4j.jar开发包,在src下添加log4j.properties配置文件。
#log4j.properties配置文件log4j.rootLogger=error,myconsole,myfilelog4j.appender.myconsole=org.apache.log4j.ConsoleAppenderlog4j.appender.myconsole.layout=org.apache.log4j.SimpleLayoutlog4j.appender.myfile=org.apache.log4j.FileAppenderlog4j.appender.myfile.File=D:
\\log4j.htmllog4j.appender.myfile.layout=org.apache.log4j.HTMLLayoutSpring注解配置方法注解配置是从JDK5.0开始支持,Spring2.5及其以上版本可以采用的一种配置方法。
注解配置优点是简单、方便。
可以替代applicationContext.xml中大量的XML定义。
注解其实是在类前、方法前、成员变量前放置的一些特殊标记。
1)Spring组件扫描可以扫描包路径下所有组件,当发现组件类定义前有以下注解标记,会将该组件纳入Spring容器。
等价于XML配中的bean定义--@Component(其他组件应用)--@Controller(Action组件应用)--@Service(Service业务组件应用)--@Repository(DAO组件应用)a.组件扫描技术使用方法如下:
--首先在applicationContext.xml中开启组件扫描应用context:
component-scanbase-package=扫描包路径/--在Action或DAO等组件前使用上述注解标记--通过容器.getBean()方法获取Bean对象。
默认使用类名首字母小写充当id值。
如果需要自定义id,可以采用@Repository(id值)b.其他bean属性注解标记:
@Scope(prototype或singleton)等价于scope属性@PreDestroy等价于destroy-method属性@PostConstruct等价于init-method属性2)IOC注入注解在成员变量或setter方法前,定义@Resource或@Autowired注解标记。
默认都可以按照类型匹配注入。
如果有多个Bean对象都匹配注入,需要指定注入的id值。
使用格式如下:
--@Resource(name=要注入的id值)--@Autowired@Qualifier(要注入的id值)3)AOP注解配置注解配置使用方法如下:
--在applicationContext.xml中开启AOP注解配置。
aop:
aspectj-autoproxy/--在方面组件中使用下面注解@Component//将组件扫描到Spring容器@Aspect//将该组件定义成方面组件--在方面组件中定义一个空方法,利用@Pointcut标记定义切入表达式@Pointcut(切入点表达式)publicvoidmypoint(){}--在方面组件共通方法上,利用通知注解标记切入。
@Before前置通知@AfterReturning后置通知@After最终通知@AfterThrowing异常通知@Around环绕通知2.Spring对数据库访问技术的支持Spring对数据库访问技术提供了以下几个重要的支持。
a.Spring提供了统一的异常处理,DataAccessExceptionb.Spring提供了DaoSupport和Template工具类c.Spring提供了声明式事务管理(基于AOP机制)Spring与JDBC技术整合a.引入Spring开发包、配置文件b.添加表对应的实体类c.编写DAO接口、DAO实现类--DAO实现类继承JdbcDaoSupport--在增删改查方法中,利用super.getJdbcTemplate()工具完成相应操作--template.update执行增删改操作--template.queryForObject查询单行结果--template.query查询多行结果--template.queryForInt查询单个值d.将DAO定义到Spring容器配置(可以采用注解或XML配置)e.引入连接池开发包(dbcp+数据库驱动),在Spring配置中添加dataSource组件定义f.在DAO组件中添加setMyDataSource方法,并且使用@Resource将容器中的dataSource组件对象注入。
(daoSupport需要注入dataSource对象,用来实例化Template工具类对象)*3.Spring与Hibernate框架整合a.引入Spring和Hibernate开发包--引入Spring开发包和配置文件--引入Hibernate开发包b.添加POJO实体类和hbm.xml映射描述文件c.定义DAO接口,编写DAO实现类--DAO实现类继承HibernateDaoSupport,使用它的getHibernateTemplate()方法获取Template对象。
--HibernateTemplate提供了增删改查处理方法。
save()、delete()、update()、load()、get()、find()d.将DAO组件定义到Spring容器(扫描或bean定义)e.定义SessionFactory对象资源,然后给DAO对象注入。
f.定义DataSource对象,给SessionFactory注入。
(DAO--注入-sessionFactory--注入-dataSource)*1.Spring与Struts2整合步骤:
引入struts-spring-plugin.jar开发包(可以访问Spring容器,利用action配置的class属性值去Spring容器中寻找Bean对象)2)将Action定义到Spring容器中,id值与action的class属性值保持一致3)在web.xml中定义ContextLoaderLisener(在服务器启动时,用于实例化Spring容器对象)4)在web.xml中采用context-param指定Spring容器配置文件位置2.strut2-spring-plugin.jar整合包在Struts2框架中有一个ObjectFactory组件,负责Struts2中Action等组件对象的创建。
strut2-spring-plugin.jar包中也提供了一个StrutsSpringObjectFactory组件,并且将struts框架的struts.objectFactory设置成了StrutsSpringObjectFactory。
因此Struts再接收请求后,会利用StrutsSpringObjectFactory获取Action对象在StrutsSpringObjectFactory中,提供了一个获取Action对象的方法,该方法主要逻辑如下:
try{//获取web.xml中lisener创建的Spring容器对象ApplicationContextac=.....;
//调用ac.getBean()获取Spring容器的Bean对象。
用class属性去寻找Objectaction=ac.getBean(class属性值)//将返回的action对象交给struts框架处理请求}catch(Exceptionex){//当利用class属性在容器中找不到对应的Bean,执行下面流程。
//采用反射机制生成一个Action对象Classclass=Class.forName(org.tarena.action.HelloAction1);
Objectaction=class.newInstance();
//访问Spring容器,将容器中id名称与Action对象属性名称相同的Bean对象,给Action注入。
//将action返回交给struts框架处理请求}*3.SSH处理流程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring 总结