- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
Spring-Boot 支持 HikariCP(默认)、tomcat-jdbc 和 Commons DBCP 作为数据库的连接池。 但是,每个池都使用一组不同的属性。 在本教程中,我们将学习如何配置 Tomcat 连接池。
首先,要配置 Tomcat 连接池,您需要在 application.properties 文件中的“spring.datasource.tomcat”命名空间中添加属性。 这是一个例子:
spring.datasource.tomcat.initial-size=15
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.max-idle=15
spring.datasource.tomcat.min-idle=8
spring.datasource.tomcat.default-auto-commit=true
接下来,在您的 pom.xml 中,您需要禁用默认连接池 (HikariCP) 并引入 tomcat-jdbc 依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>10.0.16</version>
</dependency>
最后,根据您的数据库,添加连接到数据库的驱动程序。 如果您要使用 H2 数据库:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.210</version>
<scope>runtime</scope>
</dependency>
如果要查看可通过反射调用的可用属性列表,请查看下表:
spring.datasource.tomcat.default-autoCommit |
(boolean) The default auto-commit state of connections created by this pool. If not set,defaultis JDBC driver default (If not set then the setAutoCommit method will not be called.) |
spring.datasource.tomcat.default-readOnly |
(boolean) The default read-only state of connections created by this pool. If not set thenthe setReadOnly methodwill not be called. (Some drivers don’t supportread onlymode, ex: Informix) |
spring.datasource.tomcat.default-transaction-isolation |
(String) The default TransactionIsolation state of connections created by this pool. One of the following: (seejavadoc)<br><br>* NONE <br>* READ_COMMITTED <br>* READ_UNCOMMITTED <br>* REPEATABLE_READ <br>* SERIALIZABLE <br><br>If not set, the method will not be called and it defaults to the JDBC driver.<br> |
spring.datasource.tomcat.default-catalog |
(String) The default catalog of connections created by this pool. |
spring.datasource.tomcat.driver-class-name |
(String) The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible from the same classloader as tomcat-jdbc.jar |
spring.datasource.tomcat.username |
(String) The connection username to be passed to our JDBC driver to establish a connection. Note thatmethod DataSource.getConnection(username,password) bydefault will not use credentials passed into the method, but will use the ones configured here.See alternateUsernameAllowed propertyfor more details. |
spring.datasource.tomcat.password |
(String) The connection password to be passed to our JDBC driver to establish a connection. Note thatmethod DataSource.getConnection(username,password) bydefault will not use credentials passed into the method, but will use the ones configured here.See alternateUsernameAllowed propertyfor more details. |
spring.datasource.tomcat.max-active |
(int) The maximum number of active connections that can be allocated from this pool at the same time. The default value is 100 |
spring.datasource.tomcat.max-idle |
(int) The maximum number of connections that should be kept in the pool at all times.Defaultvalueis maxActive :100 Idle connections are checked periodically (if enabled) and connections that been idle for longerthan minEvictableIdleTimeMillis willbe released. (also see testWhileIdle ) |
spring.datasource.tomcat.min-idle |
(int) The minimum number of established connections that should be kept in the pool at all times. The connection pool can shrink below this number if validation queries fail.Defaultvalue is derived from initialSize :10 (also see testWhileIdle ) |
spring.datasource.tomcat.initial-size |
(int)The initial number of connections that are created when the pool is started. Default value is 10 |
spring.datasource.tomcat.max-wait |
(int) The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception.Defaultvalue is 30000 (30 seconds) |
spring.datasource.tomcat.test-on-borrow |
(boolean) The indication of whether objects will be validated before being borrowed from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another. In order to have a more efficient validation,see validationInterval .Default value is false |
spring.datasource.tomcat.test-on-connect |
(boolean) The indication of whether objects will be validated when a connection is first created. If an object fails to validate, it will bethrow SQLException .Default value is false |
spring.datasource.tomcat.test-on-return |
(boolean) The indication of whether objects will be validated before being returned to the pool. The default valueis false . |
spring.datasource.tomcat.test-while-idle |
(boolean) The indication of whether objects will be validated by the idle object evictor (if any). If an object fails to validate, it will be dropped from the pool. The default value is false and this property has to be set in order for the pool cleaner/test thread is to run (also see timeBetweenEvictionRunsMillis ) |
spring.datasource.tomcat.validation-query |
(String) The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query does not have to return any data, it just can’t throwa SQLException .The default valueis null .If not specified, connections will be validation by the isValid() method. Example values are SELECT 1 (mysql), select 1 from dual (oracle), SELECT 1 (MSSqlServer) |
spring.datasource.tomcat.validation-query-timeout |
(int) The timeout in seconds before a connection validation queries fail. This works bycalling java.sql.Statement.setQueryTimeout(seconds) onthe statement that executesthe validationQuery .The pool itself doesn’t timeout the query, it is still up to the JDBC driver to enforce query timeouts. A value less than or equal to zero will disable this feature. The default valueis -1 . |
spring.datasource.tomcat.validator-class-name |
(String) The name of a class which implementsthe org.apache.tomcat.jdbc.pool.Validator interfaceand provides a no-arg constructor (may be implicit). If specified, the class will be used to create a Validator instance which is then used instead of any validation query to validate connections. The default valueis null .An example valueis com.mycompany.project.SimpleValidator . |
spring.datasource.tomcat.time-between-eviction-runs-millis |
(int) The number of milliseconds to sleep between runs of the idle connection validation/cleaner thread. This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often we validate idle connections. The default value is 5000 (5 seconds). |
spring.datasource.tomcat.num-tests-per-eviction-run |
(int) Property not used in tomcat-jdbc-pool. |
spring.datasource.tomcat.min-evictable-idle-time-millis |
(int) The minimum amount of time an object may sit idle in the pool before it is eligible for eviction. The default value is 60000 (60 seconds). |
spring.datasource.tomcat.access-to-underlying-connection-allowed |
(boolean) Property not used. Access can be achieved bycalling unwrap onthe pooled connection. see javax.sql.DataSource interface, or call getConnection through reflection or cast the object as javax.sql.PooledConnection |
spring.datasource.tomcat.remove-abandoned |
(boolean) Flag to remove abandoned connections if they exceedthe removeAbandonedTimeout .If set to true a connection is considered abandoned and eligible for removal if it has been in use longer than the removeAbandonedTimeout Setting thisto true canrecoverdbconnections from applications that fail to close a connection. See also logAbandoned The default valueis false . |
spring.datasource.tomcat.remove-abandoned-timeout |
(int) Timeout in seconds before an abandoned(in use) connection can be removed. The default value is 60 (60 seconds). The value should be set to the longest running query your applications might have. |
spring.datasource.tomcat.log-abandoned |
(boolean) Flag to log stack traces for application code which abandoned a Connection. Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated. The default valueis false . |
spring.datasource.tomcat.connection-properties |
(String) The connection properties that will be sent to our JDBC driver when establishing new connections.Formatof the string must be [propertyName=property;]* NOTE – The “user” and “password” properties will be passed explicitly, so they do not need to be included here. The default valueis null . |
我尝试阅读有关 Spring BOM、Spring Boot 和 Spring IO 的文档。 但是没有说明,我们应该如何一起使用它们? 在我的项目中,我们已经有了自己的 Parent POM ,所以
我正在开发的很酷的企业应用程序正在转向 Spring。这对所有团队来说都是非常酷和令人兴奋的练习,但也是一个巨大的压力源。我们所做的是逐渐将遗留组件移至 Spring 上下文。现在我们有一个 huuu
我正在尝试使用 @Scheduled 运行 Spring 批处理作业注释如下: @Scheduled(cron = "* * * * * ?") public void launchMessageDi
我对这两个概念有点困惑。阅读 Spring 文档,我发现,例如。 bean 工厂是 Spring 容器。我还读到“ApplicationContext 是 BeanFactory 的完整超集”。但两者
我们有一个使用 Spring BlazeDS 集成的应用程序。到目前为止,我们一直在使用 Spring 和 Flex,它运行良好。我们现在还需要添加一些 Spring MVC Controller 。
假设我有一个类(class) Person带属性name和 age ,它可以像这样用 Spring 配置: 我想要一个自定义的 Spring 模式元素,这很容易做到,允许我在我的 Sp
如何在 Java 中以编程方式使用 Spring Data 创建 MongoDB 复合索引? 使用 MongoTemplate 我可以创建一个这样的索引:mongoTemplate.indexOps(
我想使用 spring-complex-task 执行我的应用程序,并且我已经构建了复杂的 spring-batch Flow Jobs,它执行得非常好。 你能解释一下spring批处理流作业与spr
我实现了 spring-boot 应用程序,现在我想将它用作非 spring 应用程序的库。 如何初始化 lib 类,以便 Autowiring 的依赖项按预期工作?显然,如果我使用“new”创建类实
我刚开始学习 spring cloud security,我有一个基本问题。它与 Spring Security 有何不同?我们是否需要在 spring boot 上构建我们的应用程序才能使用 spr
有很多人建议我使用 Spring Boot 而不是 Spring 来开发 REST Web 服务。我想知道这两者到底有什么区别? 最佳答案 总之 Spring Boot 减少了编写大量配置和样板代码的
您能向我解释一下如何使用 Spring 正确构建 Web 应用程序吗?我知道 Spring 框架的最新版本是 4.0.0.RELEASE,但是 Spring Security 的最新版本是 3.2.0
我如何才能知道作为 Spring Boot 应用程序的一部分加载的所有 bean 的名称?我想在 main 方法中有一些代码来打印服务器启动后加载的 bean 的详细信息。 最佳答案 如spring-
我有一个使用 Spring 3.1 构建的 RESTful API,也使用 Spring Security。我有一个 Web 应用程序,也是一个 Spring 3.1 MVC 应用程序。我计划让移动客
升级到 Spring 5 后,我在 Spring Rabbit 和 Spring AMQP 中遇到错误。 两者现在都设置为 1.5.6.RELEASE 有谁知道哪些版本应该与 Spring 5 兼容?
我现在已经使用 Spring Framework 3.0.5 和 Spring Security 3.0.5 多次了。我知道Spring框架使用DI和AOP。我还知道 Spring Security
我收到错误 Unable to Location NamespaceHandler when using context:annotation-config running (java -jar) 由
在 Spring 应用程序中嵌入唯一版本号的策略是什么? 我有一个使用 Spring Boot 和 Spring Web 的应用程序。 它已经足够成熟,我想对其进行版本控制并在运行时看到它显示在屏幕上
我正在使用 spring data jpa 进行持久化。如果存在多个具有相同名称的实体,是否有一种方法可以将一个实体标记为默认值。类似@Primary注解的东西用来解决多个bean的依赖问题 @Ent
我阅读了 Spring 框架的 DAOSupport 类。但是我无法理解这些 DAOSuport 类的优点。在 DAOSupport 类中,我们调用 getXXXTemplate() 方法来获取特定的
我是一名优秀的程序员,十分优秀!