一、Spring 是一个 IOC(DI) 和 AOP 容器框架
(1)什么是IOC、DI?
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。提高组件的重用效率,并为系统搭建一个灵活、可扩展的平台。
(2)什么是AOP
面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
当某一功能重复使用冗余代码量时,可以将其相同流程抽出。然后后面在需要的地方注入。这就是所谓的AOP
过去在创建一个类的对象都是new出来的,这使得代码的扩展性会很差,如果利用反射机制,则会给我们的项目提供很高的扩展性。
有这样一个类,我们想要调用HelloWorld 类的hello()方法,过去都是new 一个HelloWorld 类的对象,再去调用该方法
public class HelloWorld {
private String name;
public void setName(String name){
this.name=name;
}
public void hello(){
System.out.println("hello:"+name);
}
}
如何利用Spring框架来调用该方法:
在src路径下新建一个配置文件
<?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<!-- 配置bean
class:bean 的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器
id:表示容器中的Bean,id唯一。
-->
<bean id="helloWorld" class="com.lzq.spring.HelloWorld">
<property name="name" value="Spring"></property>
</bean>
</beans>
配置文件创建好后,在测试类中就可以通过Spring框架来调用HelloWorld 类的hello()方法了
测试类:
public class Main {
public static void main(String[] args) {
//1,创建Spring 的IOC容器对象
//ApplicationContext 代表IOC容器
//ClassPathXmlApplicationContext:是ApplicationContext接口的实现类,该实现类从类路径下来加载配置文件。
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.从IOC容器中获取Bean实例
HelloWorld helloWorld =(HelloWorld) ctx.getBean("helloWorld");
//3.调用hello方法
helloWorld.hello();
}
}