一、Spring是什么
spring是JavaEE轻量级一站式开发框架,用于开发bs程序,只需少量的代码启动框架,提供对表现层,服务层,持久层的所有支持
二、Spring框架的作用是什么
因为spring是轻量级框架,开发中主要用于整合其他框架
三、IOC是什么,以及解决了什么问题
IOC名词为控制反转,将代码的调用权从调用方转移给被调用方,在使用一个接口或类的引用时不用直接new,目的为了具有依赖对象之间的解耦,实现代码的低耦合,提高开发效率和代码质量。
四、IOC的原理图
五、Spring配置入门流程图
六、Spring配置步骤
第一步:创建环境
(1)创建目录结构
(2)导入四个基础支撑包,和Spring日志Commons依赖包
第二步:创建配置文件
第三步:创建对象到容器里面
(1)创建一个类
(2)applicationContext.xml配置文件加入配置
(3)创建测试类使用getBean获得容器中的对象
七、Spring配置文件的常用标签,以及作用
1、alias标签
作用:为已配置的bean设置别名
2、bean标签
作用:用于声明一个类,在启动Spring框架的时候根据该配置的类创建对象到容器里面
(1)id :被管理的对象的唯一标识
(2)name : 给被管理的对象取的名词,可以有多个,多个直接用空格隔开
name和id没有太大区别,都可以使用,但是id只能有一个
(3)class :被管理类的全限定名
(4)scope:设置bean对象的作用方法
singleton 单例(默认) 用的最多
prototype 多例
request :在web开发一次请求
session :在web开发中一次会话有效
(4)init-method: 初始化方法,在对象创建完以后立马执行 init destory
值:就是类中对应的方法名称
(6)destroy-method:销毁方法
如果对象是单例,在容器关闭时候才会执行方法,
如果对象时多例,Spring容器不会调用销毁方法,Spring认为多例
< bean> < property name="" ref="" /> < /bean>
作用:property包含在bean标签中,对其他bean的引用,列表,映射 和属性
name:引入bean类公开的JavaBean setter方法
ref:定义配置文件其他bean的引用(其他bean的id或name)
3、<context:component-scan base-package=""/>
作用:扫描指定包下的所有类
4、<context:property-placeholder location=“classpath:xxx.properties”/>
作用:读取后缀名为properties的数据库配置文件
5、< tx:advice id=“txAdvice” transaction-manager="">
作用:tx:advice配置事务的标签,transaction-manager需要用到的事务管理器
(1)< tx:attributes> 作用:在事务管理器中配置事务增强的属性
< tx:method/> 作用:配置事务增强的具体方法
name :要处理事务的具体的方法
select* find* get* query*
isolation :事务的传播规则
propagation :事务的隔离级别
timeout :事务超时时间
read-only :是否是只读事务 DQL操作为只读,DML为非只读
顺序DQL在前,DML在后
</ tx:attributes>
</ tx:advice>
6、<tx:annotation-driven transaction-manager=“transactionManager”/>
作用:开始Spring事务的注解驱动
7、< aop:config> 作用:开启SpringAop的配置
< aop:pointcut expression=“execution(* cn.spring.service….(…))” id=“pt”/>
作用:切入点,标明切入的类和切入的方法,expression使用aspectj语法
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt" />
作用:<aop:advisor>配置切面,即拦截处理类,是切入点和通知的结合。
advice-ref 通知的引用,当前 事务通知
pointcut-ref 切入点的id值
默认底层使用的环绕通知(事务管理器自动管理事务)
=======================================
自定义配置切面aop
<aop:aspect ref="txManager"> 切面 ref 事务管理器id
<aop:before method="begin" pointcut-ref="pt"/>
前置增强
method: txManager 事务管理器对应的方法名
pointcut-ref :切入点引用
<aop:after-returning method="commit" pointcut-ref="pt"/>
后置增强,在方法正常执行完毕以后增强,提交事务
<aop:after-throwing method="rollback" throwing="e" pointcut-ref="pt"/>
异常增强
throwing:抛出的异常,值必须和对应方法的参数名相同
抛出的 Throwable 异常(顶级异常)
<aop:after method="close" pointcut-ref="pt"/>
最终增强:关闭session
<aop:around method="allOne" pointcut-ref="pt"/>
环绕通知(配置该标签,上面的四个不用再配置)
</aop:aspect>
</aop:config>
八、spring框架常用注解及作用
(1)用于类的注解
@Controller:用于声明表示层的组件注解
@Service:用于声明服务层的组件注解
@Repository:用于声明持久层的组件注解
@Component:用于声明三层以外的组件注解
@Scope 作用范围
@PostConstrcut 初始化方法
@PreDestory 销毁方法
(2)引用注入容器对象
@Autowired:用于给引用注入容器的对象。
@Resource:是Spring框架支持Sun官方制定的JSR-250标准注入对象的实现。
@Value
注入基本数据类型以及它们的包装类和String类型数据的,支持 ${ }注入Properties文件的键值对,等同 <proprty name=”...” value=”${Key}”>
(3)测试类注解
@RunWith(SpringJUnit4ClassRunner.class) 表明当前是Spring的测试类
@ContextConfiguration(“classpath:spring.xml”):读取资源加载文件
(4)Aop切面注解
@Aspect 把当前类当做aop切面类
@Pointcut(“execution(* cn.spring.service….(…))”) 指定切入点表达式
@Before 把当前方法看成是前置通知
@AfterReturning 把当前方法看成是最终通知。报异常,就不执行
@AfterThrowing 把当前方法看成是异常通知。只有报异常才执行
@After 把当前方法看成是后置通知。不管报不报异常都执行
@Around 把当前方法看成是环绕通知。
(5)事务注解
侵入代码,每个Service层类都得配置,针对不同的方法还得配置事务细节:如查询方法配置只读操作,不容易维护,建议选择xml配置
@Transactional
作用:说明当前类被Spring事务管理
isolation = Isolation.READ_COMMITTED 事务的隔离级别
propagation = Propagation.REQUIRED 事务的传播规则
timeout = 5 超时时间统计
readOnly = false/true 设置是否为只读事务