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初始化过程:

spring特性_第1张图片

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:以非事务方式执行,如果当前存在事务,则抛出异常。



你可能感兴趣的:(springboot,spring-boot开发教程)