簡體   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