Spring之IOC实现

IOC概念

  1. IoC控制反转(IoC,Inversion of Control),
    是一个概念,是一种思想。控制反转就
    是对对象控制权的转移,从程序代码本身反转到了外部容器。把对象的创建、初始化、
    销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。
  2. DI依赖注入:Dependency Injection。
    依赖注入DI是指程序运行过程中,若需要调用另
    一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创
    建后传递给程序。
    依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式
    组织在一起,而不是以硬编码的方式耦合在一起的。
  3. IoC与DI的关系
    IoC是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式之一
    是DI。

XML配置方式

普通构造注入1. 创建Spring工程

  1. 创建Spring的XML配置文件applicationContext.xml
    在这里插入图片描述
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd">
     </beans>
    
  2. 在Spring的配置文件中声明User Bean:
    在这里插入图片描述
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd">
     	<!-- 在容器中注册UserBean -->
     	<bean class="com.dpb.javabean.UserBean" id="userBean"></bean>
     </beans>
    

所谓的声明,就是将自己的信息告诉Spring容器,例如id和class,Spring容器根据class,通过反射(默认使用的是无参构造方法)就可以创建一个名为user1的User对象。

  1. 初始化容器
public static void main(String[] args) {
   	//初始化Spring容器,当Spring容器初始化时,会自动加载配置文件,然后根据配置文件中的内容初始化Bean
   	ApplicationContext ac = 
   			new ClassPathXmlApplicationContext("application.xml");
   }

在这里插入图片描述
5. 初识化Spring容器之后,可以看到User已经被创建出来了。
注意:上面这种初始化方式,要求User必须有一个无参构造方法,如果没有无参构造方法,会抛出如下异常:
在这里插入图片描述
6.通过调用容器中的getBean方法可以获取Spring容器中的对象

public static void main(String[] args) {
		//初始化Spring容器,当Spring容器初始化时,会自动加载配置文件,然后根据配置文件中的内容初始化Bean
		ApplicationContext ac = 
				new ClassPathXmlApplicationContext("application.xml");
		// 去Spring容器中获取一个UserBean对象
		UserBean user = ac.getBean("userBean", UserBean.class);
		System.out.println(user);
	}

在这里插入图片描述

Java配置方式

猜你喜欢

转载自blog.csdn.net/qq_38526573/article/details/86410044
今日推荐