配置数据库连接的好方法是什么?

时间:2017-03-07 08:44:33

标签: spring spring-mvc

我将数据库配置放在配置类中:

@Configuration
@ComponentScan("com.ambre.pta")
@EnableTransactionManagement
@PropertySources({
    @PropertySource("classpath:fr/referentiel.properties")
})
public class ApplicationContextConfig {

    @Autowired
    private Environment env;

    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean(name = "viewResolver")
    public InternalResourceViewResolver getViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Bean(name = "dataSource")
    public DataSource getDataSource() {

        BasicDataSource dataSource = new BasicDataSource();

        dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        dataSource.setUrl("jdbc:oracle:thin:@192.168.1.123:1521:xe");
        dataSource.setUsername("pta");
        dataSource.setPassword("pta");

        return dataSource;

    }

    ...

}

问题在于,每次将项目交付给不同的客户时,开发人员都必须修改这些配置并重建项目,最后重新生成war文件。

那么是否有简单的程序来更改数据库配置而无需重建或重新生成war文件?

3 个答案:

答案 0 :(得分:0)

您可以将数据库配置移动到外部属性中。

添加类似这样的内容

25.2.0

然后当您运行应用程序时,只需添加此参数(注意'文件:'前缀)

@PropertySources({
    @PropertySource("classpath:fr/referentiel.properties")
    @PropertySource("${db.properties}")
})

您可以像这样访问配置中的数据库属性

-Ddb.properties=file:/path-to.properties

@Autowired private Environment env; ... dataSource.setDriverClassName(env.getProperty("db.driver")); dataSource.setUrl(env.getProperty("db.url")); dataSource.setUsername(env.getProperty("db.username")); dataSource.setPassword(env.getProperty("db.password")); 注释,例如

@Value

属性文件@Value("${db.driver}") private String dbDriver; 应该只是一个常规属性文件。所以

path-to.properties

答案 1 :(得分:0)

我建议您使用提供开箱即用模板项目的Spring启动。此外,在Spring启动应用程序中设置数据库连接非常简单。这是我到目前为止使用的两种方式。

  1. 如果你想要一个内存数据库,你可以在你的pom.xml文件中包含H2 / HSQLDB / DERBY依赖项,你就可以了。 Spring启动会在您的pom中看到这些依赖项,并为您创建一个开箱即用的数据源。这些数据库的一个缺点是它们不提供持久存储。

  2. 如果你想要一个持久存储,比如PostgreSQL,你可以在pom.xml文件中包含依赖项,并在/ src / main / resources文件夹中维护一个application.properties文件。 例如,如果您在端口var myArray1 = [1,2,3] var myArray2 = null var arrays = [myArray1, myArray2] var oneNotEmpty = arrays.some( a => typeof a != "undefined" && a != null && a.length > 0) console.log("At least one array non-empty?", oneNotEmpty)上的本地计算机上运行了postgresql数据库track-courier,则此文件的内容将如下所示

    5432

    您不需要在配置类中手动创建任何数据源bean。弹簧靴启动开箱即用。您可以查看this链接以供参考。

答案 2 :(得分:0)

您可以使用数据源连接到数据库。 下面是使用数据源连接数据库的示例代码。

@Bean
    public DataSource dataSource_aw_es() {
        DataSource dataSource = null;
        Context ctx = null;
        try {
            ctx = new InitialContext();
            dataSource = (DataSource) ctx.lookup("java:/comp/env/jdbc/DataSourcename");
        } catch (NamingException e) {
        }
        return dataSource;
    }

您只需在服务器中配置数据源即可。 最重要的是,无需共享数据库凭据即可连接到数据库

下面是服务器上数据源的配置。(下面是Tomcat服务器的配置。我们需要在tomcat服务器的context.xml中配置下面的代码片段。)

<Resource name="jdbc/DataSourceName" auth="Container" type="javax.sql.DataSource"
              maxActive="-1" maxIdle="-1" maxWait="-1"
              username="user" password="password"
              driverClassName="com.mysql.jdbc.Driver"
                url="jdbc:mysql://IP_DB:7011/Schema_name"/>