第二天Spring-注解和AOP

1.Spring的IOC注解

准备工作

1.所需要引入的jar包


image.png

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

整合起来


image.png

Spring的切入点表达式

1.切入点表达式的语法
基于execution的函数完成的。
语法:
[访问修饰符] 方法返回值 包名.类名.方法名(参数)


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。