私は春のブートで遊んでいて、プロフィール固有の設定ファイルを作成しようとしました。私はそれをapplication-local.yml
と呼んだ。春のブートがプロファイル固有のyamlファイルから読み取れません
、コメントを追加しました:
spring:
profiles:
active: local
mysql:
db:
url: jdbc:mysql://localhost:3306/db?serverTimezone=UTC
driverClassName: com.mysql.jdbc.Driver
username: root
password:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
show_sql: false
server:
port: 8080
そして、私のDatabaseConfig.javaファイルで、私はapplication-local.yml
から読み取られ、データベースを構成しようとする:
@Configuration
@EnableTransactionManagement
public class DatabaseConfig {
@Value("${spring.mysql.db.url}")
private String url;
@Value("${spring.mysql.db.username}")
private String userName;
@Value("${spring.mysql.db.password}")
private String password;
@Value("${spring.mysql.db.driverClassName}")
private String driverClassName;
//hibernate
@Value("${hibernate.dialect}")
private String hibernateDialect;
@Value("${hibernate.show_sql}")
private String hibernateShowSql;
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(userName);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name="entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean =
new LocalContainerEntityManagerFactoryBean();
localContainerEntityManagerFactoryBean.setDataSource(dataSource());
localContainerEntityManagerFactoryBean.setPackagesToScan("xxxx");
JpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
localContainerEntityManagerFactoryBean.setJpaProperties(hibernateProperties());
return localContainerEntityManagerFactoryBean;
}
@Bean
public PlatformTransactionManager platformTransactionManager() {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject());
return jpaTransactionManager;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", hibernateDialect);
properties.put("hibernate.show_sql", hibernateShowSql);
return properties;
}
}
今、私はそれが
にできないのですエラーが出ます名前 'databaseConfig'を持つBeanの作成中にエラーが発生しました:自動従属依存の注入が失敗しました。ネストされた例外は、java.lang.IllegalArgumentExceptionがある:値にプレースホルダ「spring.mysql.db.url」を解決できませんでした「$ {spring.mysql.db.url}」
が、私は私のプロパティファイルの名前を変更しますapplication.yml
。それは完璧に正常に動作します。
また、gradleコマンド:./gradlew -Dspring.profiles.active=local bootRun
を使用して端末から実行しようとしましたが、同じエラーが発生します。これは、YAMLファイルをapplication.yml
にリファクタリングしたときにのみ機能します。私は間違って何をしていますか?私はlocal、dev、prodのような3つのプロファイルを持つつもりです。
を試してみてください、あなたのGradleファイルに次のように追加しますか? –