1.Spring的IOC注解
准备工作
1.所需要引入的jar包
2.配置文件
spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html/xsd-configuration.html
中找打IOC
3.配置文件的配置
<context:component-scan base-package="com.itheima.spring.demo1"></context:component-scan>
去配置扫描那个包
如果想扫描更多可以com.itheima.spring
代码的编写
1.@Component组件
修饰一个类
@Component(“名字”)这个相当于Xml文件中配置的
<bean id="" class=""></bean>
这个注解还有三个衍生的注解(功能类似),修饰类
- @Controller --web层
-@Service --- service层
-@Respository --dao层
2.属性注入的注解
1.普通属性
-@Value :设置普通的属性
@Value("内容")
private string name
2.对象类型属性
-@Autowired 设置对象类型的属性值,但是按照类型完成的注入
也就是说根据相应属性自动注入,但是如果加上@Qualifier一起使用配合完成属性名称的注入。
-Resource:完成对象类型的属性注入,按照名称完成属性的注入。
3.bean的其他的注解
生命周期的注解(了解)
-@PostContruct:初始化方法
-@PreDestory:销毁方法
bean的作用范围注解
-Scope
1.singleton:默认的单例
2.prototype:多例
3.request
4.session
5.globalsession
IOC的xml注解开发比较
1.使用场景
- xml:适合任何场景
- 结构清晰,维护方便
- 注解:有些地方用不了,这个类不是自己提供的
-开发方便
2.Xml和直接的整合开发使用
配置bean,注解完成属性注入
spring的aop的xml开发
1.AOP的概述
2.什么是AOP
3.spring底层的aop实现原理
- jdk动态代理:只能对实现接口的
- Cglib动态代理:都可以
4.spring的AOP底层实现
5.spring的aop简述
spring有两种AOP的开发方式
- spring传统的开发方式(弃用)
-
spring基于Aspject的AOP的开发(使用)
image.png
6.AOP的入门
1.引入基本的包
image.png
2.引入spring的配置文件
- 引入dao约束
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 配置目标对象,被增强的对象 -->
<bean id="productDao" class="com.itheima.spring.demo3.ProductDaoImpl"></bean>
<bean id="myAspect" class="com.itheima.spring.demo3.MyAspectXML"></bean>
<!-- 通过AOP的配置完成对目标类产生代理 -->
<aop:config>
<!-- 表达式配置那些类的那些方法需要增强 -->
<aop:pointcut expression="execution(* com.itheima.spring.demo3.ProductDaoImpl.save(..))" id="pointcut1"/>
<!-- 配置切面 -->
<aop:aspect ref="myAspect">
<aop:before method="checkPri" pointcut-ref="pointcut1"/>
</aop:aspect>
</aop:config>
</beans>
- 切面类
package com.itheima.spring.demo3;
/*
* 编写一个切面类
*/
public class MyAspectXML
{
public void checkPri() {
System.out.println("权限校验===========");
}
}
spring的通知类型
-
前置通知
image.png
image.png
前置通知中这个可以获得expression中的数据。
-
后置通知
image.png
image.png -
环绕通知
image.png -
异常通知
image.png -
最终通知
image.png
整合起来
Spring的切入点表达式
1.切入点表达式的语法
基于execution的函数完成的。
语法:
[访问修饰符] 方法返回值 包名.类名.方法名(参数)