Источник данных Spring Boot, определенный после запуска - PullRequest
0 голосов
/ 10 октября 2018

У меня есть приложение Spring Boot, которое будет использовать SQL Server.Я хочу иметь возможность запускать приложение без application.properties и после запуска определять URL, имя пользователя и пароль (в этот момент я напишу все в application.properties).Например, я запускаю приложение и из браузера заполняю форму этими параметрами.Я пытался с классом DataSourceBuilder, но это случилось слишком рано.

DataSourceBuilder
            .create()
            .username(username)
            .password(password)
            .url("jdbc:sqlserver://" + computerName + "\\SQLEXPRESS;DatabaseName=" + dataBaseName)
            .driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
            .build();

Я хочу иметь возможность динамически изменять источник данных после запуска приложения.

1 Ответ

0 голосов
/ 10 октября 2018

Существует несколько способов решения вашей проблемы.

Вы можете использовать аннотацию @ PostConstruct : аннотация @PostConstruct Javax может использоваться для аннотирования метода, который должен быть запущен один раз сразу послеинициализация bean

Возможно, ваш код может выглядеть примерно так:

@Component
public class DatabaseService {
    private DataSource dataSource;

    @PostConstruct
    public void init(){
        this.dataSource = DataSourceBuilder
        .create()
        .username(username)
        .password(password)
        .url("jdbc:sqlserver://" + computerName + "\\SQLEXPRESS;DatabaseName=" + dataBaseName)
        .driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
        .build();
    }
}

Также вам нужна эта зависимость:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Вот еще несколько способов: учебник

...