spring aop 切入依赖的jar包内的方法_springIOC与Aop简介

Spring框架

  • IOC(控制反转)/DI(依赖注入)
  1. 概念:
    1. IOC:将对象的创建过程转移给spring容器去完成,分离关注点
    2. DI:创建对象实例时,同时给此对象注入所依赖的属性,将组件的构建和使用分开
  1. 所需jar文件:

ad63fe0517baed455b0d8feb604ebd36.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

3cb24498eae07604d5d352a9ce5ae608.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

限制版本配置方式:

d32308aa934d63743554952d559df088.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

  1. spring配置对象:

<bean id=”” class=”” scope=”” lazy-init=”” init-method=”” destroy=””></bean>

注:scope的值有两种:

singleton单例 整个容器中只有一个对象实例 ,每次总是访问同一个对象(默认是单例)

prototype原型 每次获取bean都产生一个新的对象(效率降低)

Lazy-init属性的值有两种:

true:延迟初始化,在用到对象的时候才会创建对象

false:默认值,不延迟创建,启动时候就会创建对象

5920018aec6821edda1cccda6fe7c509.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

  1. 加载spring配置文件两种方式:
    1. 利用FileSystemXmlApplicationContext从绝对路径获取文件

ApplicationContext context1 = new FileSystemXmlApplicationContext("D://ssm-workspace//Spring_Ioc//resources//spring.xml");

(2)利用ClassPathXmlApplicationContext从资源目录下获取spring文件

ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

注:资源目录:Maven项目resources、web项目src

  1. 依赖注入的方式:
    1. <property name=”” value=””></property> name属性名、value属性值
    2. <property name=”” ref=””></property> ref引入其他对象
    3. 构造方法注入值:<constructor-arg name=”” value=””></constructor-arg>
    4. p命名空间注入值:
  • 头文件注入

xmlns:p="http://www.springframework.org/schema/p"

<bean id=”” class=”” p:属性=”” p:属性-ref=””></bean>

(5)spel注入:<property name=”” value=”#{对象名.属性名}”></property>

(6)list:<property><list><value></value>...<value></value></list></property>

(7)map:<property>

<entry>

<key><value></value></key>

<value></value>

</entry>

</property>

(8)、<property name="info">

<props>

<prop key="学号">50222</prop>

<prop key="sex">5</prop>

</props>

</property>

  1. 注解配置方式
    1. 所需jar文件:

033aa04d290e894b661b20291473388f.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

(2)给某个类创建对象的注解:

注:在类名上方加上@Component注解后,意为将UserController让spring管理,相当于:

<bean id=”userController” class=”com.qianf.controller.UserController”></bean>

特别注意,每个类都有默认无参构造方法。如果此类写了有参构造方法,需手动生成无参构造方法;如果没有写有参构造方法,此类会有默认无参构造方法,可以不写

894e3155396d66f7a22b1bc3a9bb62b2.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

(3)在spring文件中添加:扫描此包下有注解的类并创建此类的对象

<!--扫描包设置-->

<context:component-scan base-package="com.qianf.controller"/>

注:如果想用注解方式让spring来管理对象,必须在spring.xml文件中配置此扫描设置,扫描某个包下所有类,哪个类上写了@Component,spring就会管理哪个类

(4)给此对象的属性赋值

894e3155396d66f7a22b1bc3a9bb62b2.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

(5)@Value(“”)注解得作用是给普通变量类型赋值

(6)如果类属性中出现其他类对象,需要利用@Autowired(自动装配)注解,并且自动装配 得类也要交给spring管理才能自动装配

bb984ec4ee829d737adb280b41c9cc6a.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

自动扫描就需要在扫描此类所在得包才能得到

<context:component-scan base-package="com.qianf.controller,com.qianf.service"/>

(7)@Qualifier(“对象名”),标记具体用哪一个接口实现类

如果上述UserService是一个接口,并且有两个接口实现类:

UserServiceImpl1,UserServiceImpl2,需要用@Qualifier来标记,此处接口用哪个实现类

0ba4805640a588d52e2f30540adb9bf6.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

(8)@Resource(“接口实现类名”) ==@Autowired+@Qualifier(“接口实现类名”)

  • AOP:Aspect Oriented Programming 面向切面编程
  1. Aop目标:让我们可以专心做事:
    1. 将复杂得需求分解出不同方面,将散布在系统中得公共功能集中解决
    2. 采用代理机制组装起来运行,在不改变原程序得基础上对代码进行增强处理,增加新功能
    1. Aop相关术语:
      1. 增强处理(Advice):

2d7288376e657e71fb44bedce5a01ef9.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

      1. 切入点(Pointcut):

9f9bd7135e39014c64341197fb25edd9.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

      1. 连接点(Join Point):
      2. 切面(Aspect):
      3. 目标对象(Target Object):
      4. AOP代理(AOP proxy):
      5. 织入(Weaving):

28f56d67054dee8337c1f928cf79200c.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

4d20f143d6e9946a7dbdd500be8b7d01.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

9a109e2dc227a54e8c814bfb7c995ebf.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

  • 注解:

d18a101a5ae32a736ae82c98f245b836.png

f5e38a2ef4b059ab9a0e58e3f203f74e.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值