目录
基本概念
学习使用Spring实例化Bean
1. 通过构造方法实例化Bean;
2. 通过静态方法实例化Bean;
3. 通过实例方法实例化Bean
Spring设置Bean的别名
代码及演示
程序运行截图如下:
程序结构如下:
Bean1.java
package bean4test.Ioc;
public class Bean1 {
public Bean1(){
System.out.println("Bean1.Bean1");
}
}
Bean2.java
package bean4test.Ioc;
public class Bean2 {
public Bean2(){
System.out.println("Bean2.Bean2");
}
}
Bean2Factory.java
package bean4test.Ioc;
public class Bean2Factory {
public static Bean2 getBean2(){
return new Bean2();
}
}
Bean3.java
package bean4test.Ioc;
public class Bean3 {
public Bean3(){
System.out.println("Bean3.Bean3");
}
}
Bean3Factory.java
package bean4test.Ioc;
public class Bean3Factory {
public Bean3 getBean3(){
return new Bean3();
}
}
spring.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-2.5.xsd">
<bean class="bean4test.Ioc.Bean1" id="bean1" name="bean1_1, bean1_2"/>
<alias name="bean1" alias="bean1_3" />
<bean class="bean4test.Ioc.Bean2Factory" factory-method="getBean2" id="bean2"/>
<bean class="bean4test.Ioc.Bean3Factory" id="bean3Factory" />
<bean class="bean4test.Ioc.Bean3" factory-bean="bean3Factory"
factory-method="getBean3" id="bean3" />
</beans>
DemoApplicaitonTests.java
package bean4test.demo;
import bean4test.Ioc.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Test
public void contextLoads() {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
Bean1 bean1 = context.getBean("bean1", Bean1.class);
System.out.println("bean1 = " + bean1);
//传统方法
//Bean2 bean2 = Bean2Factory.getBean2();
Bean2 bean2 = context.getBean("bean2", Bean2.class);
System.out.println("bean2 = " + bean2);
//传统方法
//Bean3Factory bean3Factory = new Bean3Factory();
//Bean3 bean3 = bean3Factory.getBean3();
Bean3 bean3 = context.getBean("bean3", Bean3.class);
System.out.println("bean3 = " + bean3);
//别名
Bean1 bean1_1 = context.getBean("bean1_1", Bean1.class);
System.out.println("bean1_1 = " + bean1_1);
Bean1 bean1_2 = context.getBean("bean1_2", Bean1.class);
System.out.println("bean1_2 = " + bean1_2);
Bean1 bean1_3 = context.getBean("bean1_3", Bean1.class);
System.out.println("bean1_3 = " + bean1_3);
}
}
对Bean的感悟
个人觉得用传统的方法和使用Spring的Bean比较起来,Spring在逻辑上更加的清晰,因为利用了Java反射的机制,而C++程序员喜欢传统的方法,因为这个能看得到!
学了Spring的方法后,发现Java真的很6的语言!