spring特性

springBean作用域:

    在 bean声明时有一个scope属性,它是用于描述 bean的作用域。
    singleton:单例,代表在 spring ioc容器中只有一个Bean实例 (默认的 默认的 scope)
    prototype多例,每一次从 spring容器中获取时,都会返回一个新的实例 。
    request 用在 web开发中,将 bean对象 request.setAttribute()存储到 request域中

    session 用在 web开发中,将 bean对象 session.setAttribute()存储到 session域

Spring Bean初始化过程:

1. instantiate bean对
2. populate properties 封装属性
3. 如果 Bean实现 BeanNameAware执行 setBeanName
4. 如果 Bean实现 BeanFactoryAwar或 ApplicationContextAwar设置工厂 setBeanFactory或上 下文对象 setApplicationContext
5. 如果存在类实现 BeanPostProcess(后处理 Bean),执行 postProcessBeforeInitialization
6. 如果Bean实现 InitializingBean执行afterPropertiesSet
7. 调用自定义的init-method方法
8. 如果存在类实现BeanPostProcessor(处理 Bean),执行 postProcessAfterInitialization
9. 执行业务处理
10. 如果 Bean实现 DisposableBean执行 destroy
11. 调用自定义的 destroy-method
对于 bean的生命周期方法 :
第三步与四Bean了解 spring容器。
第五步与八可以针对指定的Bean进行功能增强,一般会使用动态代理进行功能增强 .
第六步与十:通过实现指定的接口来完成init与 destroy操作。但是在开发中一般不使用第6步与第10步,原因是我们可以使用第7步与第11步来完成。第7步与第11步的初始化与销毁操作它无耦合,推荐使用。但是必须在配置文件中指定,推荐使用

spring注解:

@Autowired它默认是根据类型进行注入,如果与 @Qualifier一起使用,就可以根据名称来进行注入。

@Component: 针对一些不确定的类,使用该注解。

@Service: 作用在service业务层

@Respository: 作用于dao层

@Controller: 作用于控制层。

Aop名词解释
1、目标对象target
是指需要被增强对象。即需要对那个对象进行关注,由于spring aop是通过代理模式实现,从而这个对象永远被理对象。
2、连接点(join point)
是指那些被拦截到的,在spring中这些点指的是方法,因为spring只支持方法类型的连接点。
3、切入点(pointcut)
即切入点是指我们要对哪些连接进行拦截的定义,它表示一组joint point,这些 joint point或是通过逻辑关系组合起来,
或通过配置、正则表达式等方式集中起来,它定义了相应的Advice将要发生的地方。
4、通知 (advice)
是指拦截到连接点之后要做的事情就,分为前置通知,后置通知,异常通知,环绕常通知,Advice定义了在pointcut 里面定义的程序点具体要做操作.
5、引介 introduction
引介是一种特殊的通知,在不修改类代码前提下introduction可以在运行期为类动态地添加一些属性和方法。
6、切面 aspect
是切入点和通知的结合。
7、织入 weaving
织入是一个过程,将切面应用到目标对象创建出AOP代理对象的过程,织入可以在编译期,类装载运行进。Spring采用动态织入,而aspectj采用静态织入
8、代理 Proxy
一个类被AOP织入增强后,就产生一个结果代理类

AOP底层实现
AOP分为静态 AOP和动态AOP。静态 AOP是指AspectJ实现的实现的AOP,他是将切面代码直接编译到Java类文件中。动态 AOP是指将切面代码进行动态织入实现的 AOP。Spring的 AOP为动态 AOP,实现的技术为:JDK提供的动态代理技术和 CGLIB(动态字节码增强技术)。

execution常用语法如下:
1. execution(public * *()) 所有的 public的方法。
2. execution(* cn.test.aop.*(..)) 所有的aop包下的所有类方法(不包含子包)
3. execution(* cn.test.aop..*(..)) 所有的aop包及其子包下的所有类方法
4. execution(* cn.test.aop.IOrderService.*(..)) IOrderService接口中定义的所有方法。
5. execution(* cn.test.aop.IOrderService+.*(..)) 匹配实现特定接口所有类的方法。
6. execution(* save*(..)) 匹配所有的以save开头的方法。

事物隔离级别:

ISOLATION_DEFUALT:它使用后端数据库的默认隔离级别(spring中选项 )。
ISOLATION_READ_UNCOMMITTED :不能解决问题,会发生脏读,不可重复读,虚读。
ISOLATION_READ_COMMITTED:可以解决脏读,会产生不可重复读与虚读。
ISOLATION_REPEATABLE_READ: 可以解决脏读,不重复,不能解决虚读。
ISOLATION_SERIALIZABLE: 串行化,可以解决所有问题。

不同的数据库,事物级别不同,例如,Oracle数据库它默认的是read_committed,Mysql数据库它默认的是repeatable_read.

事物传播特性:

PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。 
PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 
PROPAGATION_MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。 
PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。 
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 
PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starsky20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值