Sto usando JPA avvio dati primavera e in questo momento, ho questo:come posso caricare le proprietà jpa sull'origine dati in primavera?
@Configuration
@PropertySource("classpath:persistence.properties")
@EnableTransactionManagement
public class PersistenceConfiguration {
@Autowired
private Environment env;
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
entityManager.setDataSource(this.dataSource());
entityManager.setPackagesToScan(new String[] {"com.example.movies.domain"});
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
entityManager.setJpaVendorAdapter(vendorAdapter);
entityManager.setJpaProperties(this.properties());
return entityManager;
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
private Properties properties() {
Properties properties = new Properties();
properties.setProperty("hibernate.ddl-auto", this.env.getProperty("spring.jpa.hibernate.ddl-auto"));
properties.setProperty("hibernate.dialect", this.env.getProperty("spring.jpa.hibernate.dialect"));
properties.setProperty("hibernate.show_sql", this.env.getProperty("spring.jpa.show-sql"));
return properties;
}
}
E i miei persistence.properties
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sarasa_db
spring.datasource.username=root
spring.datasource.password=myPassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=false
quello che vorrei sapere è se esiste un modo per caricare questi JpaProperties automaticamente. Voglio che la molla lo costruisca perché adesso, se aggiungo una nuova proprietà jpa in persistence.properties, non si noterà questa modifica finché non avrò messo quella proprietà nell'oggetto Properties. Quindi, sai se è possibile? Saluti!
Lavorare con il framework non intorno al framework. Fondamentalmente puoi rimuovere tutta la tua configurazione in quanto Spring Boot configurerà tutto ciò automaticamente per te. Fondamentalmente quello che vuoi funziona di default ma perché hai lavorato su tutto ciò che non funziona più. –
Sì, funziona se avvio dal servizio. Il problema è che non lo faccio quando eseguo i miei test nel livello dominio ... Ecco perché lo sto creando manualmente. – jscherman
Non farlo, dovresti usare lo stesso meccanismo e non aggirarlo. –