我在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。
如何设置连接池?我知道这将显着提高数据库性能。
答案 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
这似乎有效。不确定这是否是推荐的配置方式。