728x90

전체 글 288

SpringBoot MVC 자동구성 제어하기

honeymon.io/tech/2018/03/13/spring-boot-mvc-controller.html [springboot] Spring MVC 자동구성 제어하기 - I'm honeymon(JiHeon Kim). 자동구성된 스프링 MVC 구성 조작하기 자동구성된 스프링 MVC 구성을 큰 변경없이 추가적인 조작하려면 다음과 같은 형태로 구성한다. 1 2 3 @Configuration public class WebMvcConfig implements WebMvcConfigurer, Web honeymon.io 가장 중요한 점은 @EnableWebMvc 어노테이션을 붙여주면 스프링부트의 기본적인 웹 MVC 기능들을 제외시키고 처음부터 생성해야 한다. 처음부터 다시 구현할게 아니라면 붙여주면 안된다. ht..

Backend/Spring+Boot 2021.04.21

Contents-Type, Accept

둘 다 HTTP 헤더 요소 중 하나인데 각각 구분해서 설명하면 아래와 같다. Content-Type request, response 에 모두 지정할 수 있는 헤더로 전송하는 데이터 형식을 명시한다. HTTP 표준 스펙을 따르는 브라우저와 웹서버는 Content-Type 헤더를 기준으로 HTTP 메시지에 담긴 데이터를 분석해서 파싱한다. 만약 Content-Type 헤더를 지정하지 않는다면 특정한 형식의 데이터일지라도 데이터를 받는 입장에서는 단순히 텍스트 데이터(text/plain)로 받아들인다. Get 방식의 경우 url의 쿼리스트링만으로 데이터 형식을 파악할 수 있기 때문에 굳이 Content-Type 을 지정하지 않아도 되지만 PUT, POST 처럼 메시지를 body 에 넣어서 보낼때는 반드시 지정..

SpringBoot 정적자원

SpringBoot 사용 전에는 jsp, html 같은 정적자원들은 src/main/webapp 디렉토리 하위에 배치했었다. 이는 클래스패스에 해당하는 경로로 패키징시 정적자원을 참조하는 특수경로이다. 하지만 SpringBoot 공식 메뉴얼에 보면 아래와 같이 이 경로를 사용하지 말라고 안내하고 있다. src/main/webapp애플리케이션이 jar로 패키징 된 경우 디렉토리를 사용하지 마십시오 . 이 디렉토리는 공통 표준이지만 전쟁 패키징 에서만 작동 하며 jar를 생성하면 대부분의 빌드 도구에서 자동으로 무시됩니다. 출처: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-spring-mvc-stati..

Backend/Spring+Boot 2021.04.20

Tomcat appBase, docBase

로컬에서 Tomcat 을 구동하고 http://localhost:8080/ 로 접근했을 때 화면에 보여줄 자원(html 등) 을 찾는 기본적으로 경로는 Tomcat 설치 디렉토리 아래 있는 webapps/ROOT 디렉토리이고 이를 Document Root라고 부른다. 이에 대한 설정은 conf/server.xml 에서 확인할 수 있는데 아래와 같다. ... 태그 하위에는 태그가 포함될 수 있는데 위와 같이 생략되어 있다면 기본값은 ROOT 이기 때문에 Document Root 는 webapps/ROOT 가 된다. 즉, 이는 아래와 같다. ... 여기에서 appBase 는 Tomcat 에서 기본경로이고 docBase 는 Tomcat 안에서 내부적으로 나눠지는 경로이다. 도서관을 예로 들면 도서 위치가 ap..

Backend/Server 2021.04.20

Gradle api, implements 차이

차이는 하위 모듈에 해당 의존성이 상속되느냐 마느냐 이다. 예를 들어 아래와 같이 멀티 프로젝트를 구성한다고 가정해보자. common api batch 여기에서 common 은 공통모듈이고 api, batch 에서 공통으로 사용할 코드가 포함되어 있다. 이에 api, batch build.gradle 에서는 아래와 같이 common 을 참조하고 있을 것이다. dependencies { implementation project(":common") ... } common에 아래와 같은 의존성을 정의한다고 가정해보자. implementation "com.google.guava:guava" 이 경우 api, batch 에 guava 의존성이 상속되지 않기 때문에 필요하다면 각각 다시 의존성을 정의해야 한다. 하..

Base/CI, CD 2021.04.19

SpringBoot 에러페이지 정의

SpringBoot 는 아무것도 하지 않더라도 아래와 같은 기본 에러페이지를 제공한다. 또한 view 자원 root 디렉토리에 error 디렉토리를 생성하고 그 하위에 에러상태코드에 해당하는 파일을 만들어 놓으면 각 에러 발생시 자동으로 해당 페이지가 연결된다. view자원의 root 디렉토리는 어떤 라이브러리를 사용하느냐에 따라 다르고 입맛에 맞게 얼마든지 커스텀이 가능한데 일반적인 경우을 살펴보면 아래와 같다. 기본 html: src/main/resources/public Thymeleaf: src/main/resources/templates jsp: src/main/webapp 즉, 각 라이브러리의 error 페이지는 아래 경로에 만들면 된다. 기본 html: src/main/resources/pu..

Backend/Spring+Boot 2021.04.19

Linux crontab

어떠한 작업을 일정주기로 반복적으로 수행하게 해준다. /usr/local/test.sh 라는 쉘파일이 있고 그걸 수행시킨다고 가정하고 정리한다. ​ 현재 등록되어 있는 crontab 을 확인하려면? crontab -l ​ crontab 을 등록/수정/삭제 하려면? 아래와 같이 입력하면 수행할 명령을 입력할 수 있는 vi편집기가 호출된다. crontab -e 그곳에 아래와 같이 스케줄을 포함한 명령을 행 단위로 등록하면 된다. 삭제는 그냥 삭제하거나 #로 주석처리하면 된다. 30 * * * * /usr/local/test.sh 만약 수행할 작업이 root 권한이 필요한 작업이라면? sudo crontab -e 편집기를 반드시 vim으로 띄우고 싶다면? sudo EDITOR=vim crontab -e 스케줄..

Base/OS, Network 2021.04.16
728x90