2017-10-16 224 views
0

在春季啓動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如何創建連接到數據庫並將它使用連接poo l來自我的應用程序屬性文件。我來自jdbc和hybernete,我使用DataManager,DataSource,Connection類來使用連接池,但在春季啓動時,我沒有任何代碼行,並且此類工作正常

回答

1

它的工作原理與以前一樣但通過Spring Boot,Spring爲您提供更多任務。
有或沒​​有Spring,DAO類UserRepository不直接操作數據源,也不直接創建JDBC連接。
這些操作由您正在使用的EntityManagerFactory實現操縱。
在Spring-Hibernate中,您仍然需要配置EntityManagerFactory
現在使用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啓動應用程序本身來啓動。

This part of the Spring Boot documentation給出了數據源實施的優先順序:

生產數據庫的連接,也可以自動配置使用 池DataSource。下面是選擇具體的 實現的算法:

我們更喜歡Tomcat將數據源集成到DataSource中,因爲它的性能和 併發性,所以如果可用,我們總是選擇它。

否則,如果HikariCP可用,我們將使用它。

如果Tomcat池數據源和HikariCP都不可用 並且Commons DBCP可用,我們將使用它,但我們不推薦它在生產中,並且其支持已被棄用。

最後,如果Commons DBCP2可用,我們將使用它。

+0

所行的意思是,如果我不包括 spring.datasource.tomcat.max活性= 100 spring.datasource.tomcat.max空閒= 30 春天開機使用默認值使它適合我? –