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注解的支持

 

 

 

 

 

 

 

 

posted on 2020-10-21 16:47  吅^O^  阅读(79)  评论(1编辑  收藏  举报