您的位置:首页 > 编程语言 > Java开发

2.2 Spring boot 配置分析 - 通过工厂方式注入bean

2017-10-08 11:06 866 查看
本章主要写的是 Spring5 通过实现FactoryBean 的方式 来注入Bean 。

初始条件:

1. Java version : 1.8

2. maven vesion: 1.3.9

快速链接: 2.1 Spring5 快速入门

第一步:创建一个简单结构(quickstart)的 Maven 工程



第二步:将 Spring5 的依赖加入项目的 POM 文件中:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>


第三步: 创建一个 bean , 用于注入到 Spring 中。

public class MyBean {
/* 初始化的目的是为了在获取 bean 时,可以有直观的信息输出 */
private String id = "ID_000000000001";
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}


第四步: 创建类,继承FactoryBean,将泛型T替换掉,并实现其方法。

import com.test.test1.MyBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.lang.Nullable;

public class MyBeanFactory implements FactoryBean<MyBean> {
@Nullable
public MyBean getObject() throws Exception {
return new MyBean();
}

@Nullable
public Class<?> getObjectType() {
return MyBean.class;
}

// 创建bean的方式,单例、多例,默认是多例
public boolean isSingleton() {
return false;
}
}


第五步: 创建一个配置类,用于管理要注入的 bean 或者配置文件信息。需要在类上添加 @Configuration 注解,以便让 Spring 识别为这是一个配置类。

@Configuration
public class MyConfig {
}


在此基础上,把上一步创建的自定义工厂 bean 注入到改配置类中,添加 getBean 方法:

import com.test.test2.MyBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {
@Bean
public MyBeanFactory createRunableFactory(){
return new MyBeanFactory();
}
}


上面的注释部分是可以替代 @bean 的,区别是 @Bean(“xXX”) 方式可以自定义 bean 的名字,“xXX”可以在后续获取该 bean 的时候使用。

第六步:创建一个含有 main 方法的主类,在该类中获取 Spring 的上下文,并将上述的配置类添加到获取 Spring 的上下文的构造器中,文章的目的是实现以注解的方式实现 bean 的注入,故选择 AnnotationConfigApplicationContext 。

import com.test.test2.MyBeanFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
* 测试bean基于注解的注入方式
*/
public class App
{
public static void main( String[] args ) {
// 以注解的形式把 bean 注入Spring 并获取 Spring 的上下文环境
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MyConfig.class);
// 获取自己配置的 bean 实例
MyBeanFactory runableFactory = ctx.getBean(MyBeanFactory.class);
try {
String id = runableFactory.getObject().getId();
System.out.println("MyBean ID ----- >> " + id);
} catch (Exception e) {
e.printStackTrace();
}

}
}


直接运行上面的类,输出的 bean 信息如下:

MyBean ID ----- >> ID_000000000001
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring