diff --git a/docker-compose.yml b/docker-compose.yml
index fecb979..2367191 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,4 @@
-version: '3.1'
+version: '3.8'
services:
db:
image: mysql
@@ -7,3 +7,23 @@ services:
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: vault-integration-db
+ networks:
+ - vault-network
+
+ vault:
+ image: hashicorp/vault:latest
+ ports:
+ - "8200:8200"
+ environment:
+ VAULT_ADDR: "http://0.0.0.0:8200"
+ VAULT_DEV_ROOT_TOKEN_ID: "vault-plaintext-root-token"
+ cap_add:
+ - IPC_LOCK
+ networks:
+ - vault-network
+
+networks:
+ vault-network:
+ ipam:
+ config:
+ - subnet: 172.21.0.0/24
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 8a56bb6..aeabab6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,3 @@
-
4.0.0
@@ -28,6 +27,7 @@
17
+ 2023.0.3
@@ -37,23 +37,52 @@
com.mysql
mysql-connector-j
- 8.4.0
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.cloud
+ spring-cloud-starter-vault-config
+
+
+ org.projectlombok
+ lombok
+ true
-
org.springframework.boot
spring-boot-starter-test
test
-
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
org.springframework.boot
spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
-
-
+
\ No newline at end of file
diff --git a/src/main/java/com/examples/vaultintegration/controller/EmployeeController.java b/src/main/java/com/examples/vaultintegration/controller/EmployeeController.java
new file mode 100644
index 0000000..bb48dec
--- /dev/null
+++ b/src/main/java/com/examples/vaultintegration/controller/EmployeeController.java
@@ -0,0 +1,30 @@
+package com.examples.vaultintegration.controller;
+
+import com.examples.vaultintegration.dao.EmployeeRepository;
+import com.examples.vaultintegration.model.Employee;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/employee")
+public class EmployeeController {
+
+ @Autowired
+ EmployeeRepository employeeRepository;
+
+ @GetMapping
+ public ResponseEntity getEmployee() {
+ Employee employee = employeeRepository.getEmployee(1);
+ return new ResponseEntity(employee, HttpStatus.OK);
+ }
+
+ @PostMapping
+ public ResponseEntity saveEmployee(@RequestBody Employee emp) {
+ employeeRepository.saveEmployee(emp);
+ System.out.println("employee saved");
+ return new ResponseEntity(HttpStatus.CREATED);
+ }
+}
diff --git a/src/main/java/com/examples/vaultintegration/dao/EmployeeRepository.java b/src/main/java/com/examples/vaultintegration/dao/EmployeeRepository.java
new file mode 100644
index 0000000..634c7ee
--- /dev/null
+++ b/src/main/java/com/examples/vaultintegration/dao/EmployeeRepository.java
@@ -0,0 +1,10 @@
+package com.examples.vaultintegration.dao;
+
+import com.examples.vaultintegration.model.Employee;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface EmployeeRepository {
+ Employee getEmployee(int id);
+ void saveEmployee(Employee employee);
+}
diff --git a/src/main/java/com/examples/vaultintegration/dao/EmployeeRepositoryImpl.java b/src/main/java/com/examples/vaultintegration/dao/EmployeeRepositoryImpl.java
new file mode 100644
index 0000000..5642ab3
--- /dev/null
+++ b/src/main/java/com/examples/vaultintegration/dao/EmployeeRepositoryImpl.java
@@ -0,0 +1,45 @@
+package com.examples.vaultintegration.dao;
+
+import com.examples.vaultintegration.model.Employee;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Random;
+
+@Repository
+public class EmployeeRepositoryImpl implements EmployeeRepository {
+
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
+
+ @Override
+ public Employee getEmployee(int id) {
+ jdbcTemplate.queryForObject("select id, first_name, last_name from employee where id=" + id,
+ new RowMapper