将spring / hibernate数据源的xml和java配置组合为AWS RDS

问题描述 投票:1回答:1

试图将我的机器上本地运行的spring / hibernate项目连接到我的aws rds。我正在尝试修改我以前的设置,这是一个h2本地数据库数据源。不确定如何结合使用xml和java配置将bean导入java配置?

我的dataconfig.xml

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:aws-context="http://www.springframework.org/schema/cloud/aws/context"
   xmlns:jdbc="http://java.sun.com/xml/ns/javaee"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/cloud/aws/context
    http://www.springframework.org/schema/cloud/aws/context/spring-cloud-aws-context.xsd">

<aws-context:context-region region="eu-west-1a"/>
<aws-context:context-credentials>
    <aws-context:simple-credentials access-key="
   my key" secret-key="my key" />
</aws-context:context-credentials>
<jdbc:data-source
        db-instance-identifier="mydb"
        password="my password">
</jdbc:data-source>

data config.Java

@Configuration
@PropertySource("app.properties")
@EnableJpaRepositories(basePackages = "haughton.icecreamapi.dao")
public class DataConfig {
@Autowired
private Environment env;




@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();

    factory.setDataSource(dataSource());
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan(env.getProperty("entity.package"));
    factory.setJpaProperties(getHibernateProperties());

    return factory;
}


private Properties getHibernateProperties() {
    Properties properties = new Properties();
    properties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
    properties.put("hibernate.implicit_naming_strategy",env.getProperty("hibernate.implicit_naming_strategy"));
    properties.put("hibernate.format_sql", env.getProperty("hibernate.format_sql"));
    properties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
    //removed to keep db consistent
    properties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
    return properties;
}


@Bean
public DataSource dataSource() {
    BasicDataSource ds = new BasicDataSource();

    // Driver class name
    ds.setDriverClassName(env.getProperty("db.driver"));

    // Set URL
    ds.setUrl(env.getProperty("db.url"));

    // Set username & password
    ds.setUsername(env.getProperty("db.username"));
    ds.setPassword(env.getProperty("db.password"));

    return ds;
}

}

java spring hibernate amazon-web-services amazon-rds
1个回答
0
投票

SPRING CLOUD / AWS

Spring Cloud doc Section 3.1.2告诉您如何将XML配置移动到注释中。它说要在Application Configuration对象中添加一些注释。 (如果还没有,请创建一个新的。)

@Configuration
@EnableContextInstanceData
public static class ApplicationConfiguration {
}

您有一些指定键的选项:

  • 使用环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
  • 使用系统属性aws.accessKeyId和aws.secretKey
  • 使用用户特定的配置文件凭据文件。要做到这一点,只需从运行应用程序的任何用户运行aws configure并在那里设置密钥和区域。如果您选择此路线,请记住在生产过程中将其作为系统设置的一部分。
  • 使用实例配置文件凭据(您没有在EC2实例上运行,因此这对您不起作用)

我建议使用第3个项目符号点选项。

您也可以连接application.properties文件中的值,但我不知道该怎么做。

数据源

资料来源:https://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-one-configuration/

@Configuration类PersistenceContext {

@Bean(destroyMethod = "close")
DataSource dataSource(Environment env) {
    HikariConfig dataSourceConfig = new HikariConfig();
    dataSourceConfig.setDriverClassName(env.getRequiredProperty("db.driver"));
    dataSourceConfig.setJdbcUrl(env.getRequiredProperty("db.url"));
    dataSourceConfig.setUsername(env.getRequiredProperty("db.username"));
    dataSourceConfig.setPassword(env.getRequiredProperty("db.password"));

    return new HikariDataSource(dataSourceConfig);
}

//Add the other beans here

}

此示例使用Hikari连接池框架。如果你想使用它,你将不得不添加适当的依赖项。

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.4</version>
</dependency>

这需要Java 7;还有其他兼容版本可用于Java 6-9。当然,如果您愿意,可以使用不同的连接池。

© www.soinside.com 2019 - 2024. All rights reserved.