繁体   English   中英

部署应用程序后如何在 spring 启动应用程序中提供数据源属性

[英]How to provide DataSource properties in spring boot application after deployment of the application

我正在开发一个配置为 PostgreSQL 数据库的服务器,我希望该应用程序从特定于他的数据库的客户端获取数据源属性(用户名、密码、端口、主机名等),所以我如何从客户端获取输入并传递部署后的配置,因为我只想分发服务器的 WAR 文件

是的,您可以从客户端动态添加配置。 我们可以通过spring-boot hibernate来实现这个概念。

--> 你必须创建一个 class 来自动配置属性。 我正在共享我的示例代码来配置属性。

    package com.spring.hibernate.config;

import java.util.Properties;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
public class Configurations {
    
    @Value("${db.url}")
    private String URL;
    
    @Value("${db.username}")
    private String USERNAME;
    
    @Value("${db.password}")
    private String PASSWORD;
    
    @Value("${hibernate.hbm2ddl.auto}")
    private String HBM2DDL;
    
    @Value("${hibernate.show_sql}")
    private String SHOW_SQL;
    
    @Value("${hibernate.dialect}")
    private String DIALECT;
    
    @Value("${spring.entitymanager.packagestoscan}")
    private String packagesToscan;
    
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUrl(URL);
        dataSource.setUsername(USERNAME);
        dataSource.setPassword(PASSWORD);
        return dataSource;
    }
    
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(packagesToscan);
        Properties hibernatePropertise = new Properties();
        hibernatePropertise.put("hibernate.dialect", DIALECT);
        hibernatePropertise.put("hibernate.hbm2ddl.auto", HBM2DDL);
        hibernatePropertise.put("hibernate.show_sql", SHOW_SQL);
        sessionFactory.setHibernateProperties(hibernatePropertise);
        return sessionFactory;
    }
}

在上面的结构中有一个配置class来配置应用Properties文件。 并让您的应用程序属性文件如下。

db.url: jdbc:mysql://localhost:3306/data_db
db.username: root
db.password: 8452

    hibernate.hbm2ddl.auto=update
    hibernate.show_sql=true
    hibernate.dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    spring.entitymanager.packagestoscan: com.spring.hibernate

使用上面的示例代码。 仍然需要任何逻辑对我有命令......谢谢..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM