一、构造方法实例化
下面通过一个案例演示Spring容器如何通过构造方法实例化Bean。
(1)、在IDEA中创建一个名为chapter07的Maven项目,然后在项目的pom.xml文件中配置需使用到的Spring四个基础包和Spring的依赖包。
<dependencies>
<!-- spring-core的依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- spring-beans的依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- spring-context的依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- spring-expression的依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- commons-logging的依赖包 -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
</dependencies>
(2)、创建一个名称为com.mac的包,在该包中创建Bean1类。
package com.mac;
public class Bean1 {
public Bean1(){
System.out.println("这是Bean1");
}
}
(3)、新建applicationBean1.xml作为Bean1类的配置文件,在该配置文件中定义一个id为bean1的Bean,并通过class属性指定其对应的实现类为Bean1。
<?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">
<bean id="bean1" class="com.mac.Bean1"></bean>
</beans>
(4)、创建测试类Bean1Test,在main()方法中通过加载applicationBean1.xml配置文件初始化Spring容器,再通过Spring容器生成Bean1类的实例bean1,用来测试构造方法是否能实例化Bean1。
public class Bean1Test {
public static void main(String[] args){
// 加载applicationBean1.xml配置
ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationBean1.xml");
// 通过容器获取配置中bean1的实例
Bean1 bean=(Bean1) applicationContext.getBean("bean1");
System.out.print(bean); }
}
(5)、 在IDEA中启动Bean1Test类,控制台会输出结果。
二、 静态工厂实例化
下面通过一个案例演示如何使用静态工厂方式实例化Bean。
(1)、创建Bean2类,该类与Bean1类一样,只定义一个构造方法,不需额外添加任何方法。
package com.mac;
public class Bean2 {
public Bean2(){
System.out.println("这是Bean2");
}
}
(2)、创建一个MyBean2Factory类,在该类中定义一个静态方法createBean(),用于创建Bean的实例。createBean()方法返回Bean2实例。
package com.mac;
public class MyBean2Factory {
//使用MyBean2Factory类的工厂创建Bean2实例
public static Bean2 createBean(){
return new Bean2();
}
}
(3)、新建applicationBean2.xml文件,作为MyBean2Factory类的配置文件。
<?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-4.3.xsd">
<bean id="bean2"
class="com.mac.MyBean2Factory"
factory-method="createBean"/>
</beans>
(4)、创建一个测试类Bean2Test,用于测试使用静态工厂方式是否能实例化Bean。
public class Bean2Test {
public static void main(String[] args) {
// ApplicationContext在加载配置文件时,对Bean进行实例化
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationBean2.xml");
System.out.println(applicationContext.getBean("bean2"));
}
}
(5)、在IDEA中启动Bean2Test类,控制台会输出结果。