Skip to content

JavaConfig

B1o0dy_Trey edited this page Feb 8, 2020 · 32 revisions

概述

本章主要介绍配置类的编写。

@Configuration可以将类标记为配置类,并存放到容器中。配置类中支持配置文件的属性注入和编写工厂方法。在上下文启动时,容器会自动扫描resource目录下的配置文件,并将其注入到配置类@Value标注的属性中。

配置文件默认命名为application。

configuration

@Configuration注解可以将类标记为配置类

属性:

  • value:用于标记yaml配置文件的item。

例如,resource目录下的application.yaml文件如下:

server:
    localhost: 127.0.0.1
    names:
        - name1
        - name2

在配置类中应如下配置:

@Configuration("server")
public class ConfigBean{}

如配置文件使用properties格式,则value属性则无需设置。

下面是一个例子,resource目录下的application.xml文件如下:

localhost = 127.0.0.1
driver = com.mysql.jdbc.Driver

在注解中无需设置属性:

@Configuration
public class ConfigBean{}

property

实现配置类的属性注入需要使用@Value注解

属性:

  • value:用于指定配置文件中属性的key值

下面是一个例子:

@Configuration("server")
public class ConfigBean{
    @Value("localhost")
    private String localhost;
    @Value("names")
    private List<String> names;
}

factory

在配置类中使用@Named注解标注工厂方法,容器会将工厂方法的产品存储到容器中并注入依赖。产品实例可以直接通过beanName和类型获取。同时,工厂方法也可以使用@Singleton注解设置Scope属性。

假设我们新建了一个Bean类,这个工厂方法的产品实例是我们刚刚建好的Bean实例,代码如下:

@Configuration("server")
public class ConfigBean{
    @Value("localhost")
    private String localhost;
    @Value("names")
    private List<String> names;
    
    @Singleton
    @Named("factoryBean")
    public Bean createBean(Bean bean){
        return bean;
    }
}

Clone this wiki locally