为什么使用 Spring Boot? (四)

第 2 步:使用 JavaConfig 配置 Service/DAO 层的 Bean

@Configuration @EnableTransactionManagement @EnableJpaRepositories(basePackages="com.sivalabs.demo"@PropertySource(value = { "classpath:application.properties" }) public class AppConfig  {

    @Autowired     private Environment env;

 

    @Bean     public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer()     {

        return new PropertySourcesPlaceholderConfigurer();

    }

 

    @Value"${init-db:false}")

    private String initDatabase;

 

    @Bean     public PlatformTransactionManager transactionManager()     {

        EntityManagerFactory factory = entityManagerFactory().getObject();

        return new JpaTransactionManager(factory);

    }

 

    @Bean     public LocalContainerEntityManagerFactoryBean entityManagerFactory()     {

        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();

 

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();

        vendorAdapter.setGenerateDdl(Boolean.TRUE);

        vendorAdapter.setShowSql(Boolean.TRUE);

 

        factory.setDataSource(dataSource());

        factory.setJpaVendorAdapter(vendorAdapter);

        factory.setPackagesToScan("com.sivalabs.demo");

 

        Properties jpaProperties = new Properties();

        jpaProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));

        factory.setJpaProperties(jpaProperties);

 

        factory.afterPropertiesSet();

        factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());

        return factory;

    }

 

    @Bean     public HibernateExceptionTranslator hibernateExceptionTranslator()     {

        return new HibernateExceptionTranslator();

    }

 

    @Bean     public DataSource dataSource()     {

        BasicDataSource dataSource = new BasicDataSource();

        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));

        dataSource.setUrl(env.getProperty("jdbc.url"));

        dataSource.setUsername(env.getProperty("jdbc.username"));

        dataSource.setPassword(env.getProperty("jdbc.password"));

        return dataSource;

    }

 

    @Bean     public DataSourceInitializer dataSourceInitializer(DataSource dataSource) 

    {

        DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();

        dataSourceInitializer.setDataSource(dataSource);

        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();

        databasePopulator.addScript(new ClassPathResource("data.sql"));

        dataSourceInitializer.setDatabasePopulator(databasePopulator);

        dataSourceInitializer.setEnabled(Boolean.parseBoolean(initDatabase));

        return dataSourceInitializer;

    }   

}

在 AppConfig.java 所描述的配置类中,我们做了下面的事情:

  • 使用 @Configuration 注解使之成为 Spring 配置类。

  • 使用 @EnableTransactionManagement 注解允许基于注解的事务管理。

  • 配置 @EnableJpaRepositories 指示在哪里寻找 Spring Data JPA 库。

  • Configured PropertyPlaceHolder bean u使用 @PropertySource 注解和 PropertySourcesPlaceholderConfigurer 定义来配置 PropertyPlaceHolder Bean。配置属性来自 application.properties 文件。武汉微信开发,移动开发,湖北软件开发公司。武汉微信开发,移动开发,湖北软件开发公司。

  • 为 DataSource、JPA EntityManagerFactory 和 JpaTransactionManager 定义 Bean。

  • 配置 DataSourceInitializer Bean,使之在应用启动时执行 data.sql 脚本,初始化数据库。

关于Topideas | 战略合作 | 内容合作 | 渠道合作 | 版权商标 | 隐私声明 | 工作机会 | 联系我们

Copyright © 2012 Topideas 版权所有

湖北 - 武汉 | 各个商标由其各自所有者持有 鄂ICP备13005502

咨询(客服) 咨询(客服)

欢迎给我们留言