Spring知识点总结

1.IOC/DI: 对象控制权的转移,从程序代码本身转移到了外部容器。

通常由调用者来创建被调用者的实例,在Spring里,创建被调用者的工作不再由调用者来完成,这叫做控制反转,依赖注入(Dependency injection)创建被调用者的工作由 Spring容器完成,然后注入调用者,因此也称依赖注入。控制反转和依赖注入是同一个概念。

常用依赖注入:

@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;

@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.

注意: 如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了----建议使用@Resource。

2.AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中

AOP将软件系统分为核心关注点和横切关注点,核心关注点主要处理的是业务逻辑,横切关注点是一般与业务逻辑无关,但他们经常发生在核心关注点的周围并且都是相似的,如日志处理,事物,安全,异常处理等,再说下具体的权限控制

AOP代理由IOC容器负责生成管理,依赖关系也是,主要就是定义切入点,定义增强处理,

例如:自定义注解实现权限控制

1)自定义一个注解PrivilegeInfo,使用这个注解为service层中的方法进行权限配

2) 编写一个注解解析器AnnotationParse。解析注解@PrivilegeInfo(name=” *”)(注解解析器应该把@PrivilegeInfo中的name属性值解析出来)

3)在AOP中根据PrivilegeInfo注解的值,判断用户是否拥有访问目标方法的权限,有则访问目标,没有则给 出提示

关键技术:自定义注解+注解解析+封装需要的权限信息如满足的条件+Spring AOP(编写切面,配置哪些类需要代理)

主要步骤:编写一个切面,在配置切入点

如下图:
AOP各个概念图

OOP是关注将需求功能划分为不同的并且相对独立,封装良好的类,并让它们有着属于自己的行为,依靠继承和多态等来定义彼此的关系;AOP是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。AOP 是使用切面(Aspect)将横切关注点模块化,OOP是使用类将状态和行为模块化。在OOP的世界中,程序都是通过类和接口组织的,使用它们实现程序的核心业务逻辑是十分合适。但是对于实现横切关注点(跨越应用程序多个模块的功能需求)则十分吃力,比如日志记录,验证。

Spring的声明式事务管理也是AOP的一种体现,避免了频繁的开启和提交事务,回滚事务的操作

AOP相关图:

  • AOP各个概念图:
    img

  • AOP的意义

img

  • AOP应用场景1

img

  • AOP应用场景2

img

  • AOP处理异常

img

  • 切入点表达式

img

  • AOP的其他应用场景

img

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Apple_Web

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

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

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

打赏作者

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

抵扣说明:

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

余额充值