SpringBootナレッジポイント(1)——Springbootでプロファイルを読み込む方法


準備:
jdbcを書く.properties
ファイル
jdbc
属性:
jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://127.0.0.1:3306/user 
jdbc.username=root 
jdbc.password=123456

(1):@Value+@PropertySource注意:@PropertySourceはymlファイル読み込みをサポートしていません.
   :
@ConfigurationProperties(prefix = "jdbc")
@PropertySource("classpath:jdbc.properties") 
public class JdbcConfig { 
    String url; 
    String driverClassName;
    String username; 
    String password; 
//....
}

   :
@Configuration 
@PropertySource("classpath:jdbc.properties") 
public class JdbcConfig { 
    @Value("${jdbc.url}") 
    String url; 
    @Value("${jdbc.driverClassName}") 
    String driverClassName;
    @Value("${jdbc.username}") 
    String username; 
    @Value("${jdbc.password}") 
    String password; 
  @Bean 
  public DataSource dataSource() {
      DruidDataSource dataSource = new DruidDataSource(); 
      dataSource.setUrl(url); 
      dataSource.setDriverClassName(driverClassName); 
      dataSource.setUsername(username); 
      dataSource.setPassword(password); 
      return dataSource; 
   } 
}

  :
@Configuration :     JdbcConfig       
@PropertySource :          : 
classpath:jdbc.properties
   @Value       
  @Bean  dataSource()          Bean   ,Spring        ,         Spring   。               @Autowired   DataSource !
@Autowired 
private DataSource dataSource;

(2)Springbootが提供する新しい属性(@ConfigurationProperties+@EnableConfigurationProperties)は、様々なjava基本データ型および複雑なタイプの注入をサポートします.
注意:jdbc.properties名をアプリケーションに変更します.SpringBootがデフォルトで読み込んだプロパティファイル名です.
  Application.yml ,      :


jdbc:
    driverClassName=com.mysql.jdbc.Driver 
    url=jdbc:mysql://127.0.0.1:3306/user 
    username=root 
    password=123456
@ConfigurationProperties(prefix = "jdbc") 
public class JdbcProperties { 
    private String url; 
    private String 
    driverClassName; 
    private String username; 
    private String password; 
    // getters   setters 
}

     @ConfigurationProperties             prefix="jdbc"        ,   jdbc  。         ,           jdbc.       .
@Configuration
@EnableConfigurationProperties(JdbcProperties.class) 
public class JdbcConfig { 
    @Bean 
    public DataSource dataSource(JdbcProperties jdbc) { 
        DruidDataSource dataSource = new DruidDataSource(); 
        dataSource.setUrl(jdbc.getUrl()); 
        dataSource.setDriverClassName(jdbc.getDriverClassName());                             
        dataSource.setUsername(jdbc.getUsername()); 
        dataSource.setPassword(jdbc.getPassword()); 
        return dataSource; 
    } 
}


   @EnableConfigurationProperties(JdbcProperties.class)       JdbcProperties       ,             JdbcProperties;
(1)@Autowired  
    @Autowired 
    private JdbcProperties prop;
(2)      
    private JdbcProperties prop; 
    public JdbcConfig(Jdbcproperties prop){ 
        this.prop = prop; 
    }
(3)   @Bean       
    @Bean 
    public Datasource dataSource(JdbcProperties prop){ 
    // ...
     }

(3)より直接的に@ConfigurationPropertiesを使用できる
  :      :          set  !

@Configuration
public class JdbcConfig { 
    @Bean 
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(JdbcProperties jdbc) { 
        DruidDataSource dataSource = new DruidDataSource(); 
        return dataSource; 
    } 
}

(4)Environment読み出し方式では,ロードされたすべての構成をEnvironment注入により取得することができる.
@Autowired
private Environment env;

String serverPort = env.getProperty("server.port");