@Configuration & @ConfigurationProperties

@Configuration

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {

	String value() default "";

}

启动类增加: @EnableAutoConfiguration 或者 @SpringBootApplication

import lombok.Data;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 */
@Configuration
@Data
public class ApplicationConfig {
    /**
     * 应用名
     */
    @Value("${application.name}")
    private String  appName;
    /**
     * 日报发件人.
     */
    @Value("${reportFromMail}")
    private String  reportFromMail;

}

@ConfigurationProperties 


@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
	
	@AliasFor("prefix")
	String value() default "";
	
	@AliasFor("value")
	String prefix() default "";

	
	boolean ignoreInvalidFields() default false;

	boolean ignoreNestedProperties() default false;

	boolean ignoreUnknownFields() default true;

}

启动类增加: @EnableConfigurationProperties

import javax.annotation.PostConstruct;

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;


/**
 * 属性文件中的key前缀与prefix一致. 属性对象还可以是Object.
 *
 */
@ConfigurationProperties(prefix="noob.tddl")
@Component
@Data
public class Config {
    private String dbNamePrefix;       //数据库名称前缀
    private int    dbCount;            //数据库的个数
    private int    tableCountForEachDb; //每个库中表的个数
    private int    tableCount;         //表总数

    @PostConstruct
    public void log() {
        System.out.println("DbConfig [dbNamePrefix=" + getDbNamePrefix() + ", dbCount=" + getDbCount()
                + ", tableCountForEachDb=" + getTableCountForEachDb() + ", tableCount=" + getTableCount() + "]");
    }
}

启动类:

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableDiscoveryClient
@EnableFeignClients
@EnableConfigurationProperties
@ImportResource("classpath:dependence.xml")
@MapperScan(basePackages = { "com.noob.retry.dao", "com.noob.mics.dao" })
@ComponentScan(value = { "com.noob.mics", "com.noob.common" })
@ImportAutoConfiguration(exclude = {  })
public class XraiseMicsApplication {

    public static void main(String[] args) {
        System.setProperty("PROJECT_ID", "dev");
        SpringApplication.run(XraiseMicsApplication.class, args);
    }

}

猜你喜欢

转载自my.oschina.net/u/3434392/blog/1823799