Alm*_*zak 4 java spring database-connection spring-boot connection-pool
在 Spring boot application.properties 文件中,我们有以下选项:
server.tomcat.max-threads = 100
server.tomcat.max-connections = 100
spring.datasource.tomcat.max-active = 100
spring.datasource.tomcat.max-idle = 30
Run Code Online (Sandbox Code Playgroud)
这是我的存储库类
public interface UserRepository extends JpaRepository<Users,Integer>{}
Run Code Online (Sandbox Code Playgroud)
这是服务类
@Service
@Transactional(rollbackFor = Exception.class)
public class UserService {
@Autowired
private UserRepository userRepository;
public User getUserById(Integer id){return userRepository.findOne(id)}
Run Code Online (Sandbox Code Playgroud)
问题是,userRepository 如何创建与 DB 的连接以及它是否会使用我的应用程序属性文件中的连接池。我来自 JDBC 和 hibernate,在那里我使用了 DataManager、DataSource、Connection 类来使用连接池,但是在 Spring Boot 中,我没有这些类的任何代码行,一切正常
它像以前一样工作,但是有了 Spring Boot,Spring 会为您完成更多任务。
无论有没有 Spring,DAO 类UserRepository都不直接操作数据源,也不直接创建 JDBC 连接。
这些由EntityManagerFactory您正在使用的实现操作。
使用 Spring-Hibernate,您仍然需要配置EntityManagerFactory.
现在有了 Spring Boot,你不需要配置它。
它是为你完成的。
Spring Boot 的新功能是您现在还可以配置服务器数据源属性:
server.tomcat.max-threads = 100
server.tomcat.max-connections = 100
spring.datasource.tomcat.max-active = 100
spring.datasource.tomcat.max-idle = 30
Run Code Online (Sandbox Code Playgroud)
因为 Tomcat 服务器可以由 Spring Boot 应用程序本身启动。
Spring Boot 文档的这一部分给出了数据源实现的优先顺序:
生产数据库连接也可以使用池化数据源自动配置。这是选择特定实现的算法:
我们更喜欢 Tomcat 池数据源的性能和并发性,因此如果可用,我们总是选择它。
否则,如果 HikariCP 可用,我们将使用它。
如果 Tomcat 池数据源和 HikariCP 都不可用,并且如果 Commons DBCP 可用,我们将使用它,但我们不建议在生产中使用它,并且不推荐使用它。
最后,如果 Commons DBCP2 可用,我们将使用它。
更新: 根据 Spring Boot 2.x,HikariCP 是默认的连接池机制。
| 归档时间: |
|
| 查看次数: |
10482 次 |
| 最近记录: |