栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVASpring(三)注解开发

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVASpring(三)注解开发

1.包扫描

  •  1.1.1注解
  • @Component
  • 组件id:value指定,如果没有指定默认首字母小写
1.2注入

前提:容器中的组件里,才能使用注入功能的注解

  •  1.2.1 直接注入
  •   1.2.2 配置文件;注入注解:#{配置文件的key}
  • 1.2.2.1 使用SPEL表达式
 1.3依赖注入

 

 按照类型取出组件

 此时可以用Qualufier注解

Reource(按照类型注入,如果加上name指定id注入)

 

1.3scope与生命周期 修改组件作用域

 生命周期

 测试类注入功能测试
  • 1.导入spring-test依赖
  •  2.两个注解
 2 AOP

(底层就是动态代理,用切面表达式来针对性的AOP)

 对某一个方法或者全部方法做增强,而后置处理器是全部方法

2.1核心术语

连接点-->拿到增强过程中的值(比如:委托类对象.method,args)

1.工厂类实现aop(会被spring代理工厂取代(了解))

 

 

 将一个类注册多次

 

通用的工厂类来动态代理,方法增强

(xml文件写个ProxyFactorBean,然后写俩属性)

 1.让spring帮忙写了一个工厂类

 

2.实现接口MethodInterceptor(添加到容器中)

 3.属性注入

 3.2. AspectJ

提供切入点,通知

  • 3.2.1切入点
    • 切入点表达式
    • execution
      • 对方法进行完整描述
      • execution(修饰符 返回值 包名.类名.方法名(形参))
      • 语法规律:省略,能否通配
      • 修饰符:可以省略,代表任意修饰符
      • 返回值:不可省略,可以用*通配,如果返回值是javabean要用全限定类名(全类名中也可以使用*)
      • 包名类名方法名:可以部分省略,使用..来进行省略,也可以用*通配
        • 包名的第一级不能省略    
        • 方法名不能省略
      • 形参:省略代表无参方法

        • 可以通配

          • *单个任意类型的参数

          • ..任意常数

          • 特殊用法:javaBean要写全限定类名

    • @annotation
    • (注解只是灵活的改变切面点而已)
      • 通过自定义注解来指定方法
      • 需要写一个自定义注解

       1.ref也改

  • 3.2.2 Advisor(通知器)
    • 侧重自定义(也就是其实都可以被切面替代)
    • 0.引入依赖aspectjweaver,引入groupid带org的这个

     1.写标签 :表达式:表明切入点,引入通知

     2.写增强逻辑(写通知)(这一步和工厂代理是一致的)

  • 3.2.3. Aspect
    • 已有的通知
    • 根据不同的时间提供不同的通知

 1.service类组件

 2.在切面中使用通知

 3.写一个切面类并且注册在容器中

这aop标签加上ref指定切面组件,通知标签写上组件内的方法

 

 

返回的结果

 

 抛出异常,after也会执行

 

 ​​​​

总结一下: 1.工厂类(1.bean实现工厂的委托标签,和两个propeties标签(指向方法(该方法要实现MethodInterceptor接口))) 2.注解(注解就是个切面表达式而已,记得格式就行)
3.通知器advisor
一个方法实现MethodInterceptor,里面配置通知器(和切面比都有一定局限,因为切面的选择更多) 4.4.切面Aspect (思考,一个aop需要的是切入点与切入点表达式 + 通知方法(方法应该绑定切入点))
一个类,写切面方法
配置文件直接指向

5.☆☆☆注解切面

一个aop需要的是切入点与切入点表达式 + 通知方法(方法应该绑定切入点))
一个类,写切面方法

1.开注解

2.一个类(加入容器标签,切面标签)

3.@pointcut(配置切入点,切入点表达式,方法名就是id)

4.写方法,写对应的标签(需要什么直接这形参里取)

拦截记得放行

 不放行就没值了

 4.2.4使用注解使用AspectJ

Aspect的实现形式,我们这切面类配置通知方法的形式

  • 切入点以及表达式
  • 指定切面组件
  • 把切面组件的方法指定为对应的通知方法
  • 通知方法绑定对应切入点

1.打开注解开关

2. 对切面组件注解

 3.切入点以方法的形式的存在(id是方法名,value后面是切入点表达式)

 

 4.为方法指定通知方式

 5.通知方法绑定切入点(利用通知注解的value属性) 

 

 

 

5.Aspect的连接点JoinPoint

可以拿到增强过程中的值

  • 代理对象 getThis
  • Method对象 getSignature
  • 形参getArgs
  • 委托类对象getTarget 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号