Spring启动没有加载特定的配置文件

时间:2015-08-25 16:02:42

标签: java spring maven spring-boot spring-boot-maven-plugin

我无法从命令行加载特定的Spring启动配置文件。

applciation.yml文件内容如下,它放在我的应用程序的资源文件夹中。

server:
    port: 8787
spring:
  application:
    name: demo

spring:
  profiles: local_mysql
  datasource:
    url: jdbc:mysql://localhost:3306/demo?createDatabaseIfNotExist=true
    username: root
    password: root
    driverClassName: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
      dialect: org.hibernate.dialect.MySQLDialect
server:
    port: 8787

spring:
  profiles: development
  datasource:
    url: jdbc:mysql://localhost:3306/demo?createDatabaseIfNotExist=true
    username: admin
    password: admin
    driverClassName: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
      dialect: org.hibernate.dialect.MySQLDialect
server:
    port: 8788

执行mvn clean package后 和运行应用程序 java -jar -Dspring.profiles.active=local_mysql target\demo-1.0.0-SNAPSHOT.jar

应用程序会忽略指定的配置文件,只需使用H2 Db而不是mySQL从8080开始。

2 个答案:

答案 0 :(得分:2)

创建名为application-local_mysql.yml的单独文件,并在该文件中设置local_mysql相关设置。对所有配置文件执行相同操作。在application.yml中,所有配置文件都具有通用配置。

文件应位于$CLASSPATH\config\位置。

然后运行您的应用程序。

java -jar -Dspring.profiles.active=local_mysql target\demo-1.0.0-SNAPSHOT.jar

参考:Externalized Configuration

答案 1 :(得分:0)

在我看来,最好为不同的配置文件创建许多yml文件(如@ karthikeyan-vaithilingam post中所述),但仅供注意 - 您可以在application.yml中拥有多个配置文件的属性 - 这里是eureka用法示例:

@Override
public void onPrepareOptionsMenu(Menu menu) {
            searchViewExpandCollapse = new SearchViewExpandCollapse(menu);//fragment field
            super.onPrepareOptionsMenu(menu);
}

private class SearchViewExpandCollapse implements MenuItemCompat.OnActionExpandListener
{
    private Menu menu;

    public SearchViewExpandCollapse(Menu menu) {
        this.menu = menu;
        MenuItem searchItem = menu.findItem(R.id.action_search);
        MenuItemCompat.setOnActionExpandListener(searchItem, this);//action view not expanding with this 
    }

    @Override
    public boolean onMenuItemActionExpand(MenuItem item) {
        return false;
    }

    @Override
    public boolean onMenuItemActionCollapse(MenuItem item) {
        return false;
    }
}