Понимание пула соединений загрузки Spring

В файле 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

Это мой класс репозитория

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 создает соединение с БД и будет ли он использовать пул соединений из моего файла свойств приложения. Я пришел из JDBC и спящего режима, где я использовал классы DataManager, DataSource, Connection для использования пула соединений, но при весенней загрузке у меня не было ни одной строчки кода с этими классами, и все работает нормально


person Almas Abdrazak    schedule 16.10.2017    source источник


Ответы (1)


Он работает так же, как и раньше, но с 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.

В этой части документации Spring Boot указывается порядок предпочтений реализации источника данных:

Соединения с производственной базой данных также можно настроить автоматически с помощью пула DataSource. Вот алгоритм выбора конкретной реализации:

Мы предпочитаем пул DataSource Tomcat из-за его производительности и параллелизма, поэтому, если он доступен, мы всегда выбираем его.

В противном случае, если доступен HikariCP, мы будем его использовать.

Если ни источник данных пула Tomcat, ни HikariCP недоступны и если доступна Commons DBCP, мы будем использовать ее, но мы не рекомендуем ее в производственной среде, и ее поддержка устарела.

Наконец, если доступен Commons DBCP2, мы будем его использовать.


Обновление: Согласно Spring Boot 2.x, HikariCP является механизмом пула соединений по умолчанию.

person davidxxx    schedule 16.10.2017
comment
Означает ли это, что если я не включаю spring.datasource.tomcat.max-active = 100 spring.datasource.tomcat.max-idle = 30, весенняя загрузка делает это для меня со значениями по умолчанию? - person Almas Abdrazak; 17.10.2017