Spring面试必学-AOP/IOC

本文详细介绍了Spring框架中的两个核心概念——IOC(控制反转)和AOP(面向切面编程)。针对IOC,文章阐述了其设计原则,使用原因以及依赖注入和依赖查找的实现方式。在AOP部分,解释了AOP的概念、使用场景以及通知、连接点、切入点等相关术语,并提供了动态代理和注解方式的AOP应用实例。
摘要由CSDN通过智能技术生成

SpringIOC/AOP

每次面试避不开的两个内容:

前置知识:动态代理、静态代理,单例模式、工厂模式、单例锁的问题

IOC:控制反转(Inversion of Control)

  1. 描述:

    OOP中的一种设计原则,也是Spring框架的核心.

  2. 使用原因:

    A B 两类互相引来 A中调用B

    传统:A主动创建B

    (1) A(方法)中new出B类对象,然后调用B类方法 —— 硬编码耦合;

    (2) 简单工厂获取B类对象,然后调用B类的方法 —— 与工厂产生了耦合;

    IOC:而ioc是把B 提前创建好,放到spring的容器里面。

    B的实例对象被看成Bean对象,这个Bean对象由spring容器进行创建和管理,当我们在配置文件中配置下的子元素时,spring就会自动执行在A中对B对象的setter方法(即A中需要有对B对象的setter方法),如此一来,A获取B的实例对象就不是由自己主动去获取,而是被动接受spring给它设值,那么,这个主动变为被动,就可以理解为“控制反转”。

    通过IOC则可以减少它们之间的耦合度,应用程序将对象的控制权转移给了第三方容器并通过它来管理这些被依赖对象,完成了应用程序与被依赖对象的解耦.

  3. 实现方法:

    依赖注入与依赖查找。

    依赖注入 : 应用程序被动的接收对象,IoC容器通过类型或名称等信息来判断将不同的对象注入到不同的属性中.

    依赖注入主要有以下的方式:

  • 基于set方法 : 实现特定属性的public set()方法,来让IoC容器调用注入所依赖类型的对象.

  • 基于接口 : 实现特定接口以供IoC容器注入所依赖类型的对象.

  • 基于构造函数 : 实现特定参数的构造函数,在创建对象时来让IoC容器注入所依赖类型的对象.

  • 基于注解 : 通过Java的注解机制来让IoC容器注入所依赖类型的对象,例如Spring框架中的@Autowired.

    依赖查找 : 它相对于依赖注入而言是一种更为主动的方法,它会在需要的时候通过调用框架提供的方法来获取对象,获取时需要提供相关的配置文件路径、key等信息来确定获取对象的状态.

  1. 常见实现:
    1. 第一种方式
    <?xml version="1.0" encoding="GBK"?> 

    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

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

        xsi:schemaLocation="http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> 
        <!-- 指定class属性,通过构造方法创建Bean实例 --> 
        <bean id="person" class="com.mao.gouzao.Person"> 
        </bean> 
    </beans> 

    public static void main( String[] args )

    {
        ClassPathXmlApplicationContext ctx = new  Clas
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值