目录
一、IOC
(一)企业级系统的特点:
(二)Spring框架的优点:
(三)ApplicationContext的作用:
(四)理解IOC原理、掌握IOC的配置
二、AOP(面向切面编程)
(一)AOP相关术语
(二)增强的几种方式
(三)切入点表达式匹配规则举例
三、常见的注入方式
四、ioc的注解
五、AOP注解
一、IOC
(一)企业级系统的特点:
1、大规模、用户数量多、数据规模大、功能众多
2、性能和安全要求很高
3、业务复杂
4、灵活多变
(二)Spring框架的优点:
1、低侵入式设计
去除此框架后,只需要修改一些配置信息、即可。反之,既是高侵入性
2、与第三方框架的良好整合
3、独立于各种应用服务器
4、依赖注入特性将组件关系透明化,降低了耦合度
5、面向切面编程特性允许将通用任务进行集中式处理
(三)ApplicationContext的作用:
ApplicaitonContext是
Spring
的核心、
Context
通常解释为上下文环境,这里用容器来表达更容易理解一些。ApplicationContext
则是
'
应用的容器
'
,
Spring
把
bean
放在这个容器中,在需要的时候,用
getBean
方法取出来。
(四)理解IOC原理、掌握IOC的配置
IOC/DI(控制反转/依赖注入)
简单理解:
就是把创建的对象的控制权,由我们自己本身,转移到了
Spring
容器中。交给
Spring
容器去帮我们创建对象。换句话说:以后在使用spring
的过程中,基本上不用自己去创建对象,而是交给容器去帮我们创建对象。我们只需要从容器中获取相对应的对象就行。
导入依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.10</version>
</dependency>
</dependencies>
二、AOP(面向切面编程)
AOP的目标:让我们可以“专心做事”
AOP原理 :将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决。采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能
所谓面向切面编程,是一种通过预编译和运行期动态代理的方式实现在不修改源代码的情况下给程序动态添加功能的技术
(一)AOP相关术语
增强处理(Advice):前置增强 后置增强 环绕增强、异常抛出增强、最终增强等类型
切入点(Pointcut)
连接点(Join Point)
切面(Aspect)
目标对象(Target object)
AOP代理(AOP proxy)
织入(Weaving)
(二)增强的几种方式
(三)切入点表达式匹配规则举例
public * addNewUser(entity.User): “*”表示匹配所有类型的返回值。
public void *(entity.User): “*”表示匹配所有方法名。
public void addNewUser(..): “..”表示匹配所有参数个数和类型。
* com.service.*.*(..): 匹配com.service包下所有类的所有方法。
* com.service..*.*(..): 匹配com.service包及其子包下所有类的所有方法
三、常见的注入方式
1、DI(依赖注入)
2、通过set
方法来完成值的注入。
3、通过构造方法来完成值的注入,弊端,只能靠构造方法的重载来完成。
注意事项:
当构造方法中的参数无法区分时,我们经常使用index
属性来区分调用哪一个构造方法,
index=0
表示第一个参数。
构造方法和设值注入的区别
四、ioc的注解
1、@Component:通用注解(除了dao、
service
、
controller
之外的包下面可以使用)
以下三个注解都是作用在类上面的
2、@Repostiory:用于dao
上面。
3、@Service:用于service
上面。
4、@Controller:用于controller
我们需要给属性注入值,自动装配。
@Autowire
@Quliafifire("") 指定唯一的实现类。或者 @Resource,当有多个类型的时候,需要使用
@Resource(name="
名
")
SSM
的注解使用:
凡是dao里
面的实现类,用
@Respotiory
凡是service里
面的实现类,用
@Service
凡是controller里
面的实现类,用@Controller
所有的属性上面,都需要检测是否有@Autowire,当有多个实现类的情况下,我们需要做区分来使用。
添加注解的目的,是为了告诉spring容器,我们的目的是干什么?
在类上面添加注解,主要是告知spring容器,创建对象、销毁对象、(管理对象)
在属性上面添加注解,主要的目的是告知spring容器,我们需要给属性注入值(赋值) 默认调用Set方法
五、AOP注解
@Before 前置增强
@AfterReturing后置增强
@After最终增强
@AfterThrowing异常增强
@Around 环绕增强
注意:
1、使用注解方式定义切面可以简化配置工作量
2、在配置文件中添加<aop:aspectj-autoproxy />元素,启用对于AspectJ注解的支持
2、在配置文件中添加<aop:aspectj-autoproxy />元素,启用对于AspectJ注解的支持