Spring boot和EntityManager基于application.properties

时间:2016-08-17 15:39:15

标签: java spring hibernate jpa spring-boot

我有以下Spring Boot application.properties的配置文件:

spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driver-class-name=org.postgresql.Driver    
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true  
spring.jpa.generate-ddl=true 
spring.jpa.hibernate.ddl-auto = update 
spring.jpa.database=POSTGRESQL   
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL82Dialect

它完全由spring ddl-auto处理,为我创建表格。我希望从这个'DataSource'创建EntityManager足够的信息。

我发现创建EntityManager的方法之一是:

EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "DataSorceGoesHere" );    
EntityManager entitymanager = emfactory.createEntityManager( );

问题是:

  1. application.properties中配置的数据源名称是什么?
  2. 是否有机会根据EntityManager注入application.properties

1 个答案:

答案 0 :(得分:0)

对于数据源的名称我认为我们可以用使用此代码的spring boot创建的所有bean的名称来显示它

public class Application {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);

        System.out.println("List of beans provided by Spring Boot:");
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.print(beanName);
            System.out.print(" ");
        }

        System.out.println("");
    }
}