1:Java企业级框架
企业级系统
大规模:用户数量多、数据规模大、功能众多
性能和安全要求高(反应效率,用户操作)
业务复杂
灵活应变(需求随时改变,框架耦合度低可以随时替换更简洁更轻量)
2:一些小的功能,小的亮点是组成功能的亮点
Spring专心做事(将连接数据库,页面交互用Spring进行操作,然后
专心进行编码)
3:Spring
轻量级框架, Java EE的春天,当前主流框架
目标
使现有技术更加易用,推进编码最佳实践
设计理念:
Spring是面向Bean的编程
内容
IoC容器(控制反转(依赖注入))
AOP实现(面向切面开发)
数据访问支持(ORM)(简化JDBC/ORM 框架,声明式事务)
Web集成(Spring MVC)(表示层)
4:面向切面:
经常有,并且与业务逻辑无关的东西,进行切面插入
5:Spring体系结构
Benas JavaBenas
Core loc中的C
Context上下文
ExpressionLanguage语言
6:Spring核心技术:
依赖注入(拿数据的过程): 将对象放在WEB中然后调用时到WEB中去寻找调用
控制反转(名词):将程序中的耦合放到程序外去进行调用操作
控制反转:loC:Inversion of Control
依赖注入:DI:Dependency Injection
(将组件的构建(本类)和使用(调用)分开,设值注入,构造注入)
面向切面编程:AOP:Aspect Oriented Programming
补:
面向对象Oop(Object Oriented)
7:Spring的优点(解耦)
低侵入式设计
独立于各种应用服务器
依赖注入特性将组件关系透明化,降低了耦合度
面向切面编程特性允许将通用任务进行集中式处理
与第三方框架的良好整合
8:控制反转主要思想:
将组件对象的控制权从代码本身转移到外部容器
组件化的思想:分离关注点,使用接口,不再关注实现
依赖的注入:将组件的构建和使用分开
目的:解耦合。实现每个组件时只关注组件内部的事情
要点:明确定义组件间的接口
9:Spring的设计模式,在哪使用,什么时候使用
设值注入:
通过setter访问器实现
灵活性好,但setter方法数量较多
时效性差
通过无参构造实例化
构造注入:
通过无参构造实例化
灵活性差,仅靠重载限制太多
时效性好
通过匹配的构造方法实例化,但建议保留无参构造
注:使用p命名空间注入属性值
p 命名空间的特点:使用属性而不是子元素的形式配置Bean的属性,从而简化了配置代码
语法:
对于直接量(基本数据类型、字符串)属性:p:属性名="属性值" 对于引用Bean的属性:p:属性名-ref="Bean的id"
10:
AOP的目标:让我们可以“专心做事”
Ioc的目标:解耦
11:
AOP原理
将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,
增加新的功能
(代理机制:spring进行解决)
12:增强处理:
代理对象方法前后都可以插入代码,这些代码就是增强处理
13:面向切面编程:是一种通过预编译和运行期动态代理的方法实现在不能修改
源代码的情况下给程序添加功能的技术
14:AOP相关术语:
增强处理:Advice
(前置增强,后置增强,环绕增强、异常抛出增强、最终增强等类型)
切入点 Pointcut(连接点的查询条件,进入的点)
连接点 Join Point(公共部分(增强操作)和核心部分的连接)
切面 Aspect
目标对象 Target object(核心代码)
AOP代理 AOP proxy
织入 Weaving
15:
proceedingjoinpoint环绕增强参数
getArgs参数数组方法
getmessage抛出异常方法
aop:before前置增强
aop:after-throwing抛出异常
特点:
在目标方法抛出异常时织入增强处理 ,可拔插的异常处理方案
aop:after最终增强
特点:
无论方法是否抛出异常,都会在目标方法最后织入增强处理,即:该增强都会得到执行
类似于异常处理机制中finally块的作用,一般用于释放资源
可以为各功能模块提供统一的,可拔插的处理方案
aop:around环绕增强
特点:
目标方法前后都可织入增强处理
功能最强大的增强处理
可获取或修改目标方法的参数、返回值,可对它进行异常处理,甚至可以决定目标方法是否执行
aop:after-returning后置增强
16:组件化注解:
<context:component-scan base-package=""/>:
17:注解方式将Bean的定义信息和Bean实现类结合在一起,Spring提供的注解有
@Component:实现Bean组件的定义
@Repository :用于标注DAO类
@Service :用于标注业务类 @Controller :用于标注控制器类
在XML配置文件中编写<bean id="userDao" class="dao.impl.UserDaoImpl"/>
18:使用@Autowired注解实现Bean的自动装配,默认按类型匹配,
可以使用@Qualifier指定Bean的名称
(可以对类的成员变量进行标注,也可以对方法的入参进行标注)
19:指定需要扫描的包时,多个包用逗号隔开
20:使用@Resource注解实现组件装配,默认按名称匹配
21:使用注解定义前置增强和后置增强实现日志功能
@Aspect @Before @AfterReturning @AfterThrowing @After @Around
编写Spring配置文件,完成切面织入 <aop:aspectj-autoproxy />:启用对于@AspectJ注解的支持
原文:https://www.cnblogs.com/zjx-959/p/13853273.html