概念的个人理解:

    IoC(控制反转):对于这个的理解首先要明白的是反转了什么,既然有反转那么正向是什么?

    在没有spring之前是应用程序直接自己控制资源而有了spring之后应用程序就不需要自己去了解资源底层的一切

    由容器去控制资源了,这里对资源的控制权发生了改变,这就叫控制反转

DI(依赖注入):现在应用程序如果需要资源就直接向容器要,它不用管这个资源怎么来的只需要用它就可以了

这里容器向应用程序提供资源就叫依赖注入

实例化的两种方式:一般使用ApplicationContext,它是建立在BeanFactory之上的,拥有更多的方法

   BeanFactory:延迟加载(使用时加载)

    ApplicationContext:立即加载(初始化时加载)

初始化的三种方法:

1.类构造器初始化:最常用的方法,也是最简单的方法,构造器可以不用写可以用默认的

public class Bean1 {
	public Bean1() {
		System.out.println("bean 构造方法");
	}
	public void fn() {
		System.out.println("bean1 fn.....");
	}
}

xml文件中的配置:

<!--构造器初始化  -->
1.类构造器(不写就行),默认调用构造器无参方法
<bean class="com.array.ioc.bean.xml.init.Bean1" id="bean1"></bean>

测试代码:

   

ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean1 bean1 = (Bean1) axt.getBean("bean1");
bean1.fn();

2.静态工厂初始化(了解)

bean类:
public class Bean2 {
public void fn() {
System.out.println("bean2 fn");
}
}
工厂类:方法必须是静态的,否则报错
public class Bean2Factory {
	public static Bean2 getInst() {
		//
		System.out.println("Bean2 getinst");
		return new Bean2();
	}
}
测试代码:
ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean2 bean2 = (Bean2) axt.getBean("bean2");
bean2.fn();

3.实例工厂初始化:

bean类
public class Bean3 {
	public void fn() {
		System.out.println("bean3 fn");
	}
}

工厂类:

public class Bean3Factory {
	public Bean3 getInst() {
		//
		System.out.println("Bean3 getinst");
		return new Bean3();
	}
}

xml文件配置:

<!-- 首先要创建实例工厂bean -->
<bean class="com.array.ioc.bean.xml.init.Bean3Factory" id="beanFactory"></bean>
<!-- 实例工厂初始化-->
<bean factory-bean="beanFactory" factory-method="getInst" id="bean3"></bean>

测试类:

ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean3 bean3 = (Bean3) axt.getBean("bean3");
bean3.fn();





Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐