在Spring启动application.properties文件中,我们有以下选项:
server.tomcat.max-threads = 100
server.tomcat.max-connections = 100
spring.datasource.tomcat.max-active = 100
spring.datasource.tomcat.max-idle = 30
这是我的存储库类
public interface UserRepository extends JpaRepository<Users,Integer>{}
这是服务类
@Service
@Transactional(rollbackFor = Exception.class)
public class UserService {
@Autowired
private UserRepository userRepository;
public User getUserById(Integer id){return userRepository.findOne(id)}
问题是,userRepository如何创建与DB的连接,并且它将使用我的应用程序属性文件中的连接池。我来自JDBC和hibernate,我使用DataManager,DataSource,Connection类来使用连接池,但在spring boot中,我没有任何代码行与这些类,一切正常
答案 0 :(得分:3)
它的工作方式与以前一样,但是使用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
因为Tomcat服务器可以由Spring Boot应用程序本身启动。
This part of the Spring Boot documentation给出了数据源实现的首选顺序:
也可以使用a自动配置生产数据库连接 汇集DataSource。这是选择特定的算法 实现:
我们更喜欢Tomcat池化DataSource的性能和 并发,所以如果可以,我们总是选择它。
否则,如果HikariCP可用,我们将使用它。
如果Tomcat池数据源和HikariCP都不可用 如果Commons DBCP可用,我们将使用它,但我们不会 在生产中推荐它并且不赞成它的支持。
最后,如果Commons DBCP2可用,我们将使用它。
更新: 根据Spring Boot 2.x,HikariCP是默认的连接池机制。