在Azure App Service

时间:2018-05-14 21:39:35

标签: azure spring-boot connection-pooling spring-java-config

我在Spring Boot中实现了一个REST API,并将其部署在Azure App Service(Java 8,Tomcat 8.5)实例中。此应用程序连接到Azure SQL实例。

注意:这不是嵌入式Web服务器,而是基于PaaS的Azure App Service Tomcat平台

我试图弄清楚如何使用Java Config在Spring Boot应用程序的bootstrapping主类中设置数据库连接池,因此它可以自动连接到@Repository带注释的类中,以便对应{可以使用连接池促进的JdbcTemplate实例设置{1}}个实例。

目前,我正在Spring Boot的DataSource设置数据库属性,其中自动设置application.properties

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 带注释的DAO实现类中自动连接JdbcTemplate

@Repository

然后允许我使用@Autowired private NamedParameterJdbcTemplate jdbcTemplate; 与数据库进行交互。由于应用程序使用的SQL查询的动态特性,此时没有涉及JPA / ORM ...标准SQL。

如何设置连接池?我知道这将显着提高数据库性能。

1 个答案:

答案 0 :(得分:0)

我在@SpringBootApplication(bootstrap)主类中添加了以下方法级注释@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(); }

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

我的Spring Boot应用程序的POM中需要以下依赖项:

$ sudo apt-get install --only-upgrade twine 

这似乎有效。不确定这是否是推荐的配置方式。