Spring框架学习笔记(二)-- 两大核心思想

1.IoC(控制反转)

      所谓控制反转,只要一个类将它内部状态的控制权交给其他机制来完成。就是程序中不创建对象,只在配置文件中,描述如何创建它们的方式。在代码中,不直接与对象和服务连接,在配置文件中描述哪个组件需要哪项服务。

      IoC(控制反转)是目的,DI(注入依赖)实现控制反转的手段。

      所谓依赖注入,就是将依赖的对象的创建和服务都交给配置文件和Spring框架(若不使用Spring框架,程序需要创建对象和相应的服务),依赖类只需要声明所需要的成员变量。也就是说,依赖类原本需要主动去获取对象,但采用依赖注入后对象由第三方机构提供,自己仅需声明需要什么对象即可。 

      举个栗子:

      不使用Spring框架时:

  //使用传统的方法,不考虑使用Spring框架
  UserService userService = new UserService();
  userService.setName("Dr_xiao");
  userService.sayhello();

      使用Spring框架时:

  //使用Spring框架方法
  //1.引入Spring的开发包(idea会自动下载)
  //2.创建Spring核心文件spring-config.xml
  //3.创建一个Spring的IOC容器对象
  ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
  //4.从IOC容器中获取Bean实例
  UserService userService = (UserService) context.getBean("UserService");
  //5.调用相应的方法
  userService.sayhello();

2.AOP(面向切面编程)

      所谓面向切面编程,是对所有对象或者一类对象进行编程(安全、日志、事物都属于切面)。就是说不再关注于对象编程,而是更多的可以创建非行为性的关注面,将他们插入到应用程序中。目标是在不改变代码的情况下,让程序动态增加新的服务。

      面向切面编程,是面向对象编程的一种补充,动态的将代码切入到类的指定方法、指定位置上。

      面向对象编程(OOP)是从横向上区分出一个一个类来,而面向切面编程(AOP)是从纵向上向对象中加入特定的代码。

      使用AOP的方法步骤:

  1. 定义组件:业务组件、通知组件(前置、后置、环绕...)
  2. 在容器中配置组件,以及组件之间的依赖关系注入
  3. 通过AOP注入通知
  4. 实例化容器,从容器中取出组件进行使用

        举个栗子:

//1.定义接口
//2.编写对象(被代理对象=目标对象)
//3.编写通知(前置通知目标方法调用前调用)
//4.在xml文件中进行配置
//4.1 配置被代理对象=目标对象
//4.2 配置通知
//4.3 配置代理对象是ProxyFactoryBean的对象实例
//4.3.1 <!-- 代理接口集 -->
//4.3.2 织入通知
//4.3.3 配置被代理对象

猜你喜欢

转载自blog.csdn.net/sihailongwang/article/details/79582229