From 8c7fbc1b41b712b6447d814a80f30d227a59a6df Mon Sep 17 00:00:00 2001 From: Divyanshu kumar Date: Sat, 12 Jan 2019 21:30:16 +0530 Subject: [PATCH 1/5] Added Hikari Connection Pool --- pom.xml | 146 ++++++++++-------- src/main/resources/application.properties | 5 +- .../connectionpool/HikariIntegrationTest.java | 28 ++++ ...EmployeeRestControllerIntegrationTest.java | 5 +- 4 files changed, 117 insertions(+), 67 deletions(-) create mode 100644 src/test/java/com/employee/connectionpool/HikariIntegrationTest.java diff --git a/pom.xml b/pom.xml index 9162ba8..54593c7 100644 --- a/pom.xml +++ b/pom.xml @@ -1,76 +1,92 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - com.employee - demo - 0.0.1-SNAPSHOT - jar + com.employee + demo + 0.0.1-SNAPSHOT + jar - demo - Demo project for Spring Boot + demo + Demo project for Spring Boot - - org.springframework.boot - spring-boot-starter-parent - 2.0.5.RELEASE - - + + org.springframework.boot + spring-boot-starter-parent + 2.0.5.RELEASE + + - - UTF-8 - UTF-8 - 1.8 - 2.5.0 - + + UTF-8 + UTF-8 + 1.8 + 2.5.0 + 1.4.197 + - - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.springframework.boot - spring-boot-starter-web - + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-web + - - org.springframework.boot - spring-boot-devtools - runtime - - - com.h2database - h2 - runtime - - - org.springframework.boot - spring-boot-starter-test - test - - - - io.springfox - springfox-swagger2 - ${springfox-version} - - - io.springfox - springfox-swagger-ui - ${springfox-version} - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + org.springframework.boot + spring-boot-devtools + runtime + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + io.springfox + springfox-swagger2 + ${springfox-version} + + + io.springfox + springfox-swagger-ui + ${springfox-version} + + + javax.xml.bind + jaxb-api + 2.3.0 + + + org.hamcrest + hamcrest-all + 1.3 + test + + + + com.zaxxer + HikariCP + ${hikaricp.version} + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 839ca75..bc4d8e4 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,4 @@ -server.port = 8080 \ No newline at end of file +server.port = 8080 +spring.datasource.hikari.connectionTimeout=30000 +spring.datasource.hikari.idleTimeout=600000 +spring.datasource.hikari.maxLifetime=1800000 \ No newline at end of file diff --git a/src/test/java/com/employee/connectionpool/HikariIntegrationTest.java b/src/test/java/com/employee/connectionpool/HikariIntegrationTest.java new file mode 100644 index 0000000..d001d9f --- /dev/null +++ b/src/test/java/com/employee/connectionpool/HikariIntegrationTest.java @@ -0,0 +1,28 @@ +package com.employee.connectionpool; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.sql.DataSource; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@SpringBootTest( + // instead of setting this property, we can exclude the dependency to org.apache.tomcat:tomcat-jdbc in pom.xml + properties = "spring.datasource.type=com.zaxxer.hikari.HikariDataSource") +public class HikariIntegrationTest { + + @Autowired + private DataSource dataSource; + + @Test + public void hikariConnectionPoolIsConfigured() { + assertEquals("com.zaxxer.hikari.HikariDataSource", dataSource.getClass() + .getName()); + } + +} \ No newline at end of file diff --git a/src/test/java/com/employee/demo/EmployeeRestControllerIntegrationTest.java b/src/test/java/com/employee/demo/EmployeeRestControllerIntegrationTest.java index 04b52ff..3ea2caa 100644 --- a/src/test/java/com/employee/demo/EmployeeRestControllerIntegrationTest.java +++ b/src/test/java/com/employee/demo/EmployeeRestControllerIntegrationTest.java @@ -16,6 +16,7 @@ import static org.hamcrest.Matchers.hasSize; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @RunWith(SpringRunner.class) @ContextConfiguration(classes = DemoApplication.class) @@ -38,6 +39,8 @@ public void setup() { public void verifyAllEmployeeList() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/employee/all").accept(MediaType.APPLICATION_JSON)) - .andExpect(jsonPath("", hasSize(4))).andDo(print()); + .andExpect(status().isOk()) + .andExpect(jsonPath("$", hasSize(2))) + .andDo(print()); } } From bd6d2424a95810a28fdb354807177f25c33305d2 Mon Sep 17 00:00:00 2001 From: Divyanshu kumar Date: Wed, 16 Jan 2019 19:12:14 +0530 Subject: [PATCH 2/5] Modified init data --- src/main/java/com/employee/demo/service/InitDbService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/employee/demo/service/InitDbService.java b/src/main/java/com/employee/demo/service/InitDbService.java index 1b5f30a..27c5a1f 100644 --- a/src/main/java/com/employee/demo/service/InitDbService.java +++ b/src/main/java/com/employee/demo/service/InitDbService.java @@ -21,11 +21,13 @@ public void init() { { Employee emp = new Employee(); emp.setFirstName("SONU"); + emp.setDepartment("CSE"); employeeService.addEmployee(emp); } { Employee emp = new Employee(); emp.setFirstName("MONU"); + emp.setDepartment("IT"); employeeService.addEmployee(emp); } } From 4651a57648359a180ae5af5049476b792d581729 Mon Sep 17 00:00:00 2001 From: Divyanshu kumar Date: Wed, 16 Jan 2019 19:42:07 +0530 Subject: [PATCH 3/5] fix for HikariIntegrationTest failure --- .../ApplicationWithHikariConnectionPool.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/test/java/com/employee/connectionpool/ApplicationWithHikariConnectionPool.java diff --git a/src/test/java/com/employee/connectionpool/ApplicationWithHikariConnectionPool.java b/src/test/java/com/employee/connectionpool/ApplicationWithHikariConnectionPool.java new file mode 100644 index 0000000..fb25dc0 --- /dev/null +++ b/src/test/java/com/employee/connectionpool/ApplicationWithHikariConnectionPool.java @@ -0,0 +1,12 @@ +package com.employee.connectionpool; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ApplicationWithHikariConnectionPool { + + public static void main(String[] args) { + SpringApplication.run(ApplicationWithHikariConnectionPool.class, args); + } +} \ No newline at end of file From 0e543263c2f1d90c24eede693dc4993276f3a1f7 Mon Sep 17 00:00:00 2001 From: Divyanshu kumar Date: Wed, 16 Jan 2019 20:22:34 +0530 Subject: [PATCH 4/5] Create README.md --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d147007 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +[![Build Status](https://semaphoreci.com/api/v1/monuk18/demo/branches/test/badge.svg)](https://semaphoreci.com/monuk18/demo) From 6373ac81e2e98aa0be3eb6d1b6a965c1350bf5b4 Mon Sep 17 00:00:00 2001 From: Divyanshu kumar Date: Sun, 27 Jan 2019 18:41:57 +0530 Subject: [PATCH 5/5] Added Dockerfile and dockerfile-maven-plugin --- Dockerfile | 13 +++++++++++++ pom.xml | 22 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8c64e4c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM openjdk:8-jre +MAINTAINER Divyanshu kumar + +ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/myservice/demo.jar"] + +# Add Maven dependencies (not shaded into the artifact; Docker-cached) +#ADD target/lib /usr/share/myservice/lib +# Add the service itself +ARG JAR_FILE=demo-0.0.1-SNAPSHOT.jar + +ADD target/${JAR_FILE} /usr/share/myservice/demo.jar + +EXPOSE 8080 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 54593c7..caafa03 100644 --- a/pom.xml +++ b/pom.xml @@ -85,6 +85,28 @@ org.springframework.boot spring-boot-maven-plugin + + com.spotify + dockerfile-maven-plugin + + + divyankumar/spring-boot-demo + ${project.version} + + ${project.build.finalName}.jar + + + + + default + install + + build + push + + + +