분류 전체보기
@ControllerAdvice으로 @ExceptionHandler 전역 에러 핸들러 만들기
@ControllerAdvice @RestControllerAdvice 를 사용하여 @ExceptionHandler 을 전역으로 설정 컨트롤러에서 사용되는 공통 기능들을 모듈화하기 위한 어노테이션으로, @InitBinder @ModelAttribute @ExceptionHandler 세 가지 어노테이션을 지원합니다. 이 중 @ExceptionHandler 를 사용해 보았습니다. @Slf4j @RestControllerAdvice public class ExceptionHandlerAdvice { /* 400 Bad Request - 클라이언트가 유효하지 않은 요청을 보낸 경우 401 Unauthorized - 해당 서버에 클라이언트 인증이 실패한 경우 403 Forbidden - 클라이언트가 인증은 됐지..
REST API LocalDateTime 사용할 때 문제점 해결해보기
발생한 문제 생긴 문제는 MyBatis를 사용하여 Json 데이터를 insert하고 user 객체를 반환합니다. 이 때, id는 기본키이며, auto increment이고 det는 datetime, Current_timestamp로 현재 날짜와 시간을 자동으로 생성해줍니다. User class //User @Data public class User{ private long id; private String email; private String password; private String name; private LocalDateTime det; } User Controller //컨트롤러 @PostMapping public Object postUser(@RequestBody @Validated User..
Gradle build 결과물 중 plane 만들어 질 경우 (아카이브)
1. Dockfile을 통해 빌드 결과물을 COPY하려고 하는데 결과물이 두 개 이상이어서 디렉토리로 지정하라는 에러가 나옵니다. # FROM openjdk:11-jdk ARG JAR_FILE=build/libs/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 이 때, 이 문제를 해결하기 위한 방법 중 한 가지는 이 /*.jar을 해당 빌드된 결과물 파일명을 그대로 써넣는 것입니다. ARG JAR_FILE=build/libs/*.jar 2. Gradle build가 일어날 때 아카이브 파일을 생성하지 않도록 하여, 빌드 결과물이 하나만 나오게 하겠습니다. plane.jar이 생성되지 않도록 해줍니다. //build.gradle t..
Vue.js 프로젝트 Jenkins로 nginx에 배포해보기
vue cli 를 통해 vue 프로젝트를 만들었습니다. 일반적으로 vue.config.js 를 따로 설정해 주지 않는 이상 npm run build를 실행하게 되면 해당 디렉토리에 dist라는 폴더가 만들어집니다. build의 결과물인 dist라는 폴더를 nginx에 올려야 합니다. 1. vue 프로젝트를 git 저장소에 push를 합니다. 이렇게 push가 되었습니다. 2. webhook을 통해 젠킨스가 빌드되기를 바랍니다. 해당 저장소의 Settings 를 눌러줍니다. Webhooks 를 눌러줍니다. 저는 이미 만들어놨기에 하나가 만들어져 있습니다. 여기서 Add webhook을 눌러줍니다. URL은 젠킨스의 접속 주소입니다. 저는 ec2를 사용하기 때문에 ec2의 주소 + /github-webhoo..
AWS EC2 EBS(Elastic Block Store) 볼륨 프리티어 연결해보기
AWS에서 EBS는 30GiB까지 프리티어 지원합니다. 사용하는 인스턴스를 클릭합니다. 스토리지를 눌러보면 루트 디바이스 이름이 있습니다. EBS에 볼륨을 눌러줍니다. 볼륨을 생성해줍니다. 생성한 볼륨을 클릭하고 작업을 눌러주면 연결을 눌러줍니다. 인스턴스를 클릭해서 적용할 인스턴스를 눌러주고, 디바이스를 아까 인스턴스의 루트 디바이스와 같이 해준 후 연결을 눌러줍니다. df -h 해당 인스턴스를 연결하여 df -h 명령어를 실행하면 루트 디렉토리 용량이 늘어난 것을 확인 할 수 있습니다. 저는 20G로 하였습니다.
스프링 부트 + Vue.js 연동 같은 프로젝트 일 때 router 설정
스프링 부트 프로젝트에 vue.config.js 로 npm build 하여 /resources/static/ 경로에 index.html로 만들었을 경우 import { createRouter, createWebHistory } from 'vue-router' import Home from '../views/Home.vue' import Login from "@/components/Login"; const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/login', name: 'Login', component: Login } ] const router = createRouter({ history: createWebHistory(pro..
스프링부트 Mybatis boot-starter로 Mysql 연동하기
1. xml를 사용하지 않고 mybatis-spring-boot-starter를 사용하여 연동해보겠습니다. https://github.com/mybatis/spring-boot-starter/wiki/Quick-Start mybatis/spring-boot-starter MyBatis integration with Spring Boot. Contribute to mybatis/spring-boot-starter development by creating an account on GitHub. github.com 빠른 시작 방법을 알 수 있습니다. implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' runtimeOnly 'm..
Vue.js axios 전역 설정과 baseURL 설정
vue cli 를 통한 vue3를 설치했습니다. router와 vuex 등을 체크하고 설치했습니다. main.js 기본구조 입니다. import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' createApp(App).use(store).use(router).mount('#app') npm install axios axios를 설치해줍니다. import axios from "axios"; axios를 import 해줍니다. axios.defaults.baseURL = 'http://localhost:8888' baseURL를 설정해줍니다. // creat..