Настройка пула соединений SQL в веб-приложении Spring Boot, развернутом в службе приложений Azure - PullRequest
0 голосов
/ 15 мая 2018

Я реализовал REST API в Spring Boot и развернул его в экземпляре службы приложений Azure (Java 8, Tomcat 8.5). Это приложение подключается к экземпляру Azure SQL.

Примечание. Это не встроенный веб-сервер, а платформа Tomcat службы приложений Azure на основе PaaS

Я пытаюсь выяснить, как настроить пул соединений с базой данных в главном классе начальной загрузки приложения Spring Boot с помощью Java Config, чтобы он мог автоматически подключаться к аннотированным классам @Repository, соответствующим JdbcTemplate экземпляры можно настроить с помощью экземпляров DataSource, поддерживаемых пулом соединений.

В настоящее время я настраиваю свойства базы данных в application.properties Spring Boot, который автоматически устанавливает DataSource:

spring.datasource.url=jdbc:sqlserver://<azure-sql-connection-string>
spring.datasource.username=dbadmin
spring.datasource.password=dbpassword
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

Это позволяет автоматически подключать JdbcTemplate в аннотированном классе реализации DAO @Repository:

@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

, который затем позволяет мне взаимодействовать с базой данных, используя JdbcTemplate. В этот момент не используется JPA / ORM ... стандартный SQL из-за динамического характера запросов SQL, используемых приложением.

Как настроить пул соединений? Я знаю, что это значительно улучшит производительность базы данных.

1 Ответ

0 голосов
/ 22 мая 2018

Я добавил следующую аннотацию на уровне метода @Bean в основной класс @SpringBootApplication (начальная загрузка):

@Bean
public DataSource dataSource(Map<String,String> dbProps) {

    DataSourceBuilder factory = DataSourceBuilder.create()
            .driverClassName(dbProps.get("SQLDriverClassName"))
            .type(BasicDataSource.class)
            .url(dbProps.get("SQLDatabaseUrl"))
            .username(dbProps.get("SQLDatabaseUsername"))
            .password(dbProps.get("SQLDatabasePassword"));

    return factory.build();
}

Следующие зависимости требовались в POM моего приложения Spring Boot:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.1.0.jre8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
    </dependency>

Кажется, это работает. Не уверен, что это рекомендуемый способ настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...