`
webcode
  • 浏览: 5947910 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

spring介绍

 
阅读更多
1.DI 依赖注入
在Spring框架中,两个组件对象之间具有依赖关系(使用和被使用),依赖注入技术就是将被使用者对象给使用者对象传进去.
*1)setter方式注入(推荐)
a.在使用者中,定义"接口类型"的变量和setter方法
b.在spring容器配置中,添加<property name="属性" ref="要注入的对象名">
2)构造方式注入
a.在使用者中,定义"接口类型"的变量和带参数的构造方法
b.在spring容器配置中,添加<constructor-arg index="参数索引" ref="要注入的对象名"/>
*2.IOC
IOC Inversion Of Controll 反向控制,控制转移
在Spring中利用DI技术,实现了IOC机制,将两个组件解耦.
控制权:可以指定调用关系,可以创建对象,可以管理和释放对象.
一般编程,使用者具有控制权,可以指定调用哪个组件,负责创建对象这些工作;但是基于Spring框架之后,
使用者控制权转移到了Spring容器,由Spring容器负责这些工作.
采用了IOC之后,如果底层组件(DAO)发生替换,只要修改Spring容器的配置,不需要修改上层组件(Action),
将组件进行了解耦,增强了程序结构的灵活性.

3.各种类型值注入的格式
1)基本类型值的注入格式
<property name="size">
<value>15</value>
</property>
*2)Bean对象的注入格式
<property name="userDao" ref="userdao">
</property>
3)集合类型值的注入格式
List,Set,Map,Properties类型注入格式


4.组件自动扫描(了解)
此功能从spring2.5开始支持,因为2.5开始基于jdk5.0,从jdk5.0开始有了注解技术.
利用该技术,可以将指定package下的组件,自动扫描纳入到spring容器中.避免在xml中编写大量<bean>元素
使用方法如下:
1)在spring的xml配置中,引入context命名空间
2)利用<context:component-scan>元素
<context:component-scan base-package="包路径"/>
3)如果发现包中的类,类定义前面有以下注解,将纳入spring容器,id名默认采用类名(首字母小写).
@Controller :扫描控制层组件的注解标记,例如Action
@Service :扫描业务层组件的注解标记,例如Service
@Repository :扫描数据访问层组件的注解标记,例如DAO
@Component :其他组件
如果需要自定义id名,可以采用@Controller("id自定义名")
4)属性注入注解
在变量定义前,使用@Resource注解标记,spring默认会采用类型匹配原则将符合的bean对象注入进来.
如果按指定id名注入bean对象,可以使用
@Resource(name="bean对象的id名").
注入还可以使用@Autowired,如果需要注入指定名的bean对象.
@Autowired
@Qualifier("hibernateUserDAO")
注意:setter方法可以不写,将来spring自动生成.
5)其他注解
@Scope("prototype")//等价于<bean scope="prototype">
@PostConstruct//等价于<bean init-method>
@PreDestroy//等价于<bean destroy-method>


1.AOP的概念及优点
Aspect Oriented Programming面向方面编程.
面对象编程的关注点是对象,面向方面编程以面向对象编程为基础,关注点是切面,切面组件可以作用在若干目标对象的方法上,封装了具有通用性的一些处理.例如日志记录,事务处理,异常处理等等.
面向方面编程优点:将共通处理封装成了一个独立组件,利用配置形式作用在了某一批目标对象上,实现组件的重复利用,将切面和目标对象解耦,实现了低耦合应用.
*a.切面(Aspect)
封装了共通处理的组件,可用于切入到目标对象的处理方法中
*b.切入点(Pointcut)
用于指定目标对象和方法的一个表达式.是连接点的集合.
连接点是切面组件与某一个目标对象方法的作用点,例如方法调用和异常发生
*c.通知(Advice)
用于指定切面功能切入目标对象方法的位置.例如切入到目标方法调用之前,目标方法调用之后等.
通知类型:前置通知,后置通知,环绕通知,最终通知,异常通知
try{
//执行前置通知<aop:before>
//执行环绕通知--前置<aop:around>
执行目标对象方法
//执行环绕通知--后置
//执行后置通知<aop:after-returnning>
}catch(Exception ex){
//执行异常通知<aop:after-throwing>
}finally{
//执行最终通知<aop:after>
}


d.目标对象(Target)
需要使用切面功能的,被切入的Bean对象.使用切入点表达式指定
e.动态代理(AutoProxy)
在Spring采用了AOP之后,从容器取出的目标对象是一个动态代理类型,调用代理对象方法时,代理对象会调用切面功能和目标对象功能.
动态代理类生成技术:
有接口的目标对象采用JDK Proxy技术.
没有接口的目标对象采用CGLIB技术.
2.切入点表达式的定义
1)方法限定execution
execution(修饰符? 返回类型 方法名(参数类型) throws 异常?)
a.匹配com.tarena.UserDAO的save()方法
execution(* com.tarena.UserDAO.save(..))
b.匹配com.tarena.UserDAO的所有方法
execution(* com.tarena.UserDAO.*(..))
c.匹配com.tarena.UserDAO的所有public void方法
execution(public void com.tarena.UserDAO.*(..))
d.匹配com.tarena包下所有类型的所有方法
execution(* com.tarena.*.*(..))
e.匹配com.tarena包下及其子包所有类型的所有方法
execution(* com.tarena..*.*(..))
f.匹配UserDAO中有一个参数并且是String类型的方法
execution(* com.tarena.UserDAO.*(java.lang.String))
2)类型限定within
within(类型)
a.匹配com.tarena.UserDAO的所有方法
within(com.tarena.UserDAO)
b.匹配com.tarena包下的所有类的所有方法
within(com.tarena.*)
c.匹配com.tarena包下及其子包的所有类的所有方法
within(com.tarena..*)
3)id名限定bean
bean(idOrName属性值)
a.匹配容器中所有id或name属性值以dao结尾的bean对象
bean(*dao)




1.Spring与Struts2整合(方法二推荐使用)结构图参考ssh2-1.jpg
特点:将Service,DAO组件都交给Spring容器管理.Action交给StrutsSpringObjectFactory创建,并且利用spring容器中的Bean对象给Action属性注入.默认按名称匹配原则注入.
1)在web.xml中配置ContextLoaderListener(参考整合方法一)
2)引入了Struts2和Spring整合的开发包.
注意:在编写Action组件时,如果某个属性需要使用Spring容器Bean对象,该属性名要与Spring容器中<bean>元素的id值保持一致,因为默认是按名称匹配原则注入.如果名称不一致还要注入,可以修改default.properties中的参数设置,改为按类型匹配注入.在struts.xml中添加以下定义
<constant name="struts.objectFactory.spring.autoWire"
value="type"/>
2.Spring的事务管理
1)编程式事务管理方式(基于编码实现,了解)
public Object someServiceMethod() {
return transactionTemplate.execute(
new TransactionCallback() {
// the code in this method executes in a transactional context
public Object doInTransaction(TransactionStatus status) {
updateOperation1();
return resultOfUpdateOperation2();
}
});
}




2)声明式事务管理方式(基于配置实现,推荐使用)
a.首先定义一个事务管理bean
jdbc访问数据库的事务管理bean,(需要注入dataSource):
org.springframework.jdbc.datasource.DataSourceTransactionManager
hibernate访问数据库的事务管理bean(需要注入sessionFactory):
org.springframework.orm.hibernate3.HibernateTransactionManager
b.引入tx命名空间,定义事务管理通知
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
......
<tx:attributes>
</tx:advice>
c.添加aop配置,将事务通知切入到目标对象
<aop:config>
<aop:pointcut id="daocut"
expression="within(com.tarena.dao.impl.*)"/>
<!-- advisor是通知和切入点的结合体 -->
<aop:advisor advice-ref="txAdvice"
pointcut-ref="daocut"/>
</aop:config>


Spring中常用事务类型:
REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与REQUIRED类似的操作。
拥有多个可以回滚的保存点,内部回滚不会对外部事务产生影响。只对DataSourcManager有效


3.利用注解方式整合ssh2
1)注解方式管理事务
a.在Spring容器配置中,添加以下配置,启用事务注解
<!-- 启用注解方式管理事务 -->
<tx:annotation-driven
transaction-manager="txManager"/>
b.在目标对象类定义或方法定义前,使用@Transactional
2)组件自动扫描功能
<context:component-scan base-package="com.tarena"/>
@Repository,@Service,@Component,@Controller
@Resource,@AutoWired
3)AOP注解
<aop:aspectj-autoproxy/>
@Aspect,@PointCut,@Around,@AfterThrowing等
4)Spring配置文件可以拆成若干个.例如示例拆成
applicationContext-base.xml
applicationContext-annotation.xml


在web.xml中,定义spring容器实例化部分修改文件引用
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>

*1.SSH2整合关键步骤(重点)
1)客户发请求,请求首先进入Struts2框架
--检查web.xml是否配置Struts2控制器
2)控制器要根据struts.xml进行请求的处理
--检查struts.xml配置文件<action>元素
3)控制器要调用Action对象的execute处理请求
--检查struts-spring-plugin.jar整合插件包是否引入
4)整合插件负责创建Action对象,访问Spring容器,将容器中的Service对象给Action对象注入.
--检查Action对象属性与Spring容器中Service的<bean>定义的id是否一致
5)Spring容器负责创建Service对象,将DAO对象给Service注入.
--检查applicationContext.xml容器配置
--检查Service组件的<bean>定义,以及注入DAO配置
--检查DAO组件的<bean>定义,以及sessionFactory配置
--检查sessionFactory组件<bean>定义,以及dataSource配置
6)Spring容器需要在Tomcat启动时创建
--检查web.xml,ContextLoaderLisener的定义.
2.Spring的MVC框架(了解)
1)客户发送*.do请求
2)请求到达web.xml声明的DispatcherServlet控制器
3)控制器调用Spring容器中的HandlerMapping组件处理
4)HandlerMapping负责请求和Controller处理组件的映射
5)控制器调用请求对应的Controller组件,执行约定处理方法.
6)Controller处理完毕,返回ModelAndView组件对象
7)ModelAndView负责封装模型数据(request)和响应视图名
8)控制器调用视图解析器ViewResolver,寻找对应的JSP视图
9)在JSP响应视图中可以利用标签和EL获取模型数据显示.


3.Spring框架的体系结构(了解)
Spring主要由6个模块构成.
a.Core模块:IoC容器,提供IoC控制服务.
b.AOP模块:提供AOP控制服务.
c.DAO模块:提供整合JDBC技术的服务,提供JDBC事务管理
d.ORM模块:提供整合ORM技术的服务,提供事务管理
e.Web模块:提供SpringMVC,整合其他Web框架的服务.
f.JavaEE模块:提供整合JavaEE服务.例如JMS消息服务等






























分享到:
评论

相关推荐

    spring介绍ppt 介绍spring的基本概念和使用

    spring介绍ppt 介绍spring的基本概念和使用,从ioc和aop讲起,对想快速了解spring的人有很大帮助

    spring原理和介绍

    spring介绍,spring 原理,spring 入门,spring入门总结

    体验控制反转的理念及Spring介绍技术文档

    体验控制反转的理念及Spring介绍技术文档,相信对大家有所帮助;

    Spring介绍和DEMO

    Spring介绍 一 Spring的主要技术 1 IOC: 2 AOP动态代理: 3 Spring中支持事务管理

    spring的详细介绍

    Spring介绍 1. Spring 2. 使用spring的主要目的 3. Spring的模块 Ejb容器(以前是) Ioc容器(现在的控制权) 控制反转Ioc(Invertion of control)依赖注入(Dependency Injection) 4. Ioc容器作用 5. Spring中注入方式 ...

    spring介绍及应用

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是...Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。

    java教材37-Spring介绍(IT job就业培训).doc

    java教材37-Spring介绍(IT job就业培训)

    ssh框架之spring介绍

    以ppt的形式介绍了SSH框架中的spring的核心技术和相应的使用方法,并提到了spring的实现机制

    Spring介绍 ppt

    Spring介绍 ppt 可供初学者查阅,介绍了spring的aop和ioc

    spring详细介绍

    详细讲解框架spring的原理、使用、环境,用通俗易通的语言

    JAVA中spring介绍.docx

    Spring框架介绍: Spring是一个开源的Java框架,用于构建企业级应用程序。它提供了广泛的基础设施支持和丰富的特性,使得开发者能够轻松构建可维护、可扩展、松耦合的应用。以下是Spring框架的一些关键特性和组件:...

    JAVA Spring介绍 ppt

    这个ppt是我在给我们研究所同学们做讲解时用的,主要以图解的方式分析了IoC和AOP的概念,通俗易懂,在阅读时还可以对照我发的《Spring学习笔记++》看,效果会更好。如果在阅读中有不清楚的地方可以联系我:shansun...

    Spring介绍与IOC

    Spring和 IOC 介绍 及简要配置说明,

    JAVA中spring介绍:JAVA spring的优缺点详解

    JAVA spring的优缺点详解

    Spring 简介 Spring 简介

    Spring 简介 Spring 简介

    Java中的Spring介绍及应用.pdf

    Spring是一个开源的Java平台,它提供了全面的编程和配置模型,用于现代Java应用程序。Spring最初由Rod Johnson在2003年创建,目的是解决企业应用开发的复杂性。Spring的核心特性包括依赖注入(DI)和面向切面编程...

    java面试Spring.pdf

    1. Spring 介绍 1.1 Spring 的优点 1.2 Spring 的缺点 1.3 详细讲解一下核心容器(spring context应用上下文) 模块 2. Spring俩大核心概念 IOC,Inversion of Control,控制反转 AOP(Aspect-OrientedProgramming),...

Global site tag (gtag.js) - Google Analytics