【學習筆記】Spring——IOC創建的三種方式


  • Spring容器創建的三種方式
例子:
HelloWorld 類:
package com.itheima11.spring.ioc.createobject.method;

public class HelloWorld {
public HelloWorld(){
System.out.println("返回方式");
}
public void hello(){
System.out.println("hello world");
}
}

HelloWorldFactory 類:

package com.itheima11.spring.ioc.createobject.method;

public class HelloWorldFactory {
public static HelloWorld getInstance(){
return new HelloWorld();
}
}



HelloWorldFactory2 類

package com.itheima11.spring.ioc.createobject.method;

public class HelloWorldFactory2 {
public HelloWorld getInstance(){
return new HelloWorld();
}
}


第一種:spring容器在默認的情況下使用默認的構造函數創建對象
客戶端
/**
* spring容器在默認的情況下使用默認的構造函數創建對象
*/
@Test
public void testCreateObject_Default(){
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
helloWorld.hello();
}

配置文件:

<bean id="helloWorld" class="com.itheima11.spring.ioc.createobject.method.HelloWor
ld"></bean>


第二種:

/**
* 在spring容器 內部,調用了HelloWorldFactory中的getInstance方法
* 而該方法的內容就是創建對象的過程,是由程序員來完成
*/
@Test
public void testCreateObject_StaticFactory(){
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld2");
helloWorld.hello();
}

配置文件:

<bean id="helloWorld2"  class="com.itheima11.spring.ioc.createobject.method.HelloWorldFactory"  factory-method="getInstance"></bean>


第三種:

/**
* 實例工廠
* 1、spring容器創建一個實例工廠bean
* 2、該bean調用了工廠方法getInstance產生對象
*/
@Test
public void testCreateObject_InstanceFactory(){
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld3");
helloWorld.hello();
}


配置文件:
<bean id="helloWorldFactory" class="com.itheima11.spring.ioc.createobject.method.HelloWorldFactory2"></bean>

<!--
factory-bean指向了實力工廠的bean
factory-method實例工廠對象的方法
-->
<bean id="helloWorld3" factory-bean="helloWorldFactory" factory-method="getInstance"></bean>




注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com