spring重点

spring重点

spring创建对象的三种方式
(1)通过构造方法创建,默认走的是无参构造,如果需要指定参数,需要在对象的实体类中添加有参的构造方法,如果设定的条件匹配多个构造方法。默认执行最后的构造方法
(2)实例工厂,通过工厂设计模式帮助创建类对象,需要先创建一个工厂,才能生产对象
(3)静态工厂,不需要创建工厂,快速创建对象

如何给bean的属性赋值(注入)
(1)通过构造方法设置值
(2)设置注入(通过set方法),如果是基本数据类型或string等用value

DI依赖注入,当一个类A中需要引入另一个类B对象时,把B赋值给A的过程就叫做依赖注入用ref

AOP面向切面编程,就是在原有纵向执行流程中添加横切面,不需要修改原有程序代码,高扩展性,原有功能相当于释放了部分逻辑,让职责更加明确
概念:
(1)原有功能:切点
(2)前置通知:在切点之前执行的功能
(3)后置通知:在切点之后执行的功能
(4)如果切点执行过程中出现异常,会触发异常通知 throws advice
(5)原有功能总称叫做切面
(6)织入:把切面嵌入到原有功能的过程叫做织入

spring中提供了两种实现AOP的方式
(1)schema-based:每个通知都需要实现接口,配置spring配置文件时在aop:config配置中
(2)Aspectj:每个通知不需要实现接口,配置spring配置文件实在aop:config的子标签aop:aspect
也可以使用注解,基于Aspect,sppring不会自动去寻找注解,必须在配置文件中声明在实现aop的异常通知时,可以明确知道为什么在service中只能抛异常,不能捕获异常,如果在service中捕获异常后,spring容器就无法捕获异常,在实现aop时事务就不能回滚
在实现aop功能时,默认使用的原生jdk的动态代理,我们必须在配置文件中将原生的jdk的动态代理换成cglib,防止出现CCE异常

自动注入:在spring配置文件中如果对象名和ref中的id名相同使用自动注入,可以不配置,它也有两种实现办法,在bean标签中通过autowire配置,只对这个bean生效,也可以在全局中的beans下配置default-autowire配置,表示当前文件中所有bean都是全局配置
autowire可取值
(1)default:默认值,找全局default-autowire,默认全局和局部都没有配置的情况下,相当于no
(2)no:不自动注入
(2)byName:通过名称自动注入,在spring中找类的id
(3)byType:根据类型注入,spring容器中不可出现两个相同类型的bean
(4)constructor:根据构造方法注入,需要提供对应参数的构造方法(构造方法参数包含注入的对象),底层还是使用byName,构造方法参数名和其它bean的id相同
在加载全局配置文件时,优先加载自动注入的bean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值