spring是一个轻量级的企业级开发框架,核心是
制反转(IOC)和面向切面(AOP)。
控制反转(IOC)利用JAVA反射机制,反射机制是指在运行状态中,对于任意一个类,能够知道对于这个类的所有属性和方法;对于任意一个对象,能够调用这个对象的所有属性和方法。控制反转是指原本被调用者的实例是由调用者创建,但是耦合性太强;现在则统一将对象交给Spring容器创建管理。你只需要在spring配置文件中配置相应bean并设置好属性,spring容器启动时会初始化好你配置的bean,在你调用时分配给你需要的bean的类,
bean的生命周期:通过xml配置的bean和java的BeanDefinitionBuilder中读取bean的定义,实例化Bean对象,对bean设置属性,进行Aware依赖注入,
执行通用的方法前置处理,方法: BeanPostProcessor.postProcessorBeforeInitialization()
执行 InitalizingBean.afterPropertiesSet() 方法
执行Bean自定义的初始化方法init,或者 @PostConstruct 标注的方法;
执行destory()方法,或者@destory注解标注的方法,对象销毁完毕
bean的作用范围:
singleton 单例
prototype 每次注入都是一个新的对象
request 每次请求创建一个对象
seeeion 每次回话创建一个对象
global session web容器全局对象
面向切面(AOP)
为了java的应用更好的模块化,应用场景在事务,安全,日志;
先在pom.xml文件中添加依赖,通过@Aspect注解标识一个类为注解类,@component注解进行扫描,用@pointcut定义切点,然后在Advice通知中调用这个方法,做后通过joinpoint连接点来获取类名和获取代理对象。
事务:四大特性
原子性 :事务是一个不可分割的工作单位,要么全部成功要么全部失败
一致性:事务使数据库从一个一致性转换到另一个一致性,例如转账前转账后总金额不变
隔离性:一个事务的执行时不会被其他事务所干扰,事物之间隔离开来
持久性:事务一旦提交,对数据库中数据的改变是永久性的,接下来即使数据库发生故障也不会对其产生影响
事务的隔离级别:
读未提交 安全级别最低,会发生脏读、不可重复读、幻读
读已提交 避免脏读发生 orcale默认
可重复读 避免脏读、不可重复读 mysqlghua
串行化:安全级别最高,避免脏读、幻读、不可重复读
使用java的JDK动态代理(接口代理)或者CGlib(扩展代理类)实现。



