Я обнаружил, что мое веб-приложение Spring Boot создает новые подключения к базе данных и не закрывает их должным образом. Это проблема, потому что у меня есть ограничение на количество подключений. Объяснение, которое я нашел, кажется мне довольно расплывчатым. Не могли бы вы объяснить, как правильно управлять пулом соединений в Spring Boot?
Я использую Spring Boot 2.2.5, Hibernate Core 5.4.12, Heroku, JawsDB.
Это мой метод контроллера:
@Controller
public class MainController {
@GetMapping("/index")
public String index(Model model) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<Project[]> responseProjects = restTemplate.exchange("http://" + url + "/api/v1/projects", HttpMethod.GET, entity, Project[].class);
List<Project> projectList = Arrays.asList(responseProjects.getBody());
Приведенный выше код получает все проекты, используя это:
@RestController
@RequestMapping("/api/v1")
public class ProjectContoller {
@Autowired
private ProjectRepository projectRepository;
@GetMapping("/projects")
public List<Project> getAllProjects(){
return projectRepository.findAll();
}
Ниже приведен мой файл application.properties. Я слышал, что Heroku автоматически управляет этой конфигурацией, в зависимости от надстройки базы данных (для установки пароля и т. Д. c.), Связанной с приложением, поэтому я не знаю, уместно ли это.
spring.datasource.url=url
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.max-active: 2
spring.datasource.max-idle: 2
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update