Spring/Spring Boot
-
JSR-303 Errors들을 Json으로 Serialization 해보자Spring/Spring Boot 2020. 6. 25. 02:22
JSR-303 bean validation이 끝나게 되면 Errors에 error들이 담기게 된다. 기본적인 도메인들은 자바 빈 스펙을 따르기 때문에 BeanSerializer에 의해서 Serialization/Deserialization 이 가능하다. ( 스프링의 경우 ObjectMapper 이용 ) 하지만 Errors들은 불가능하다. 다음의 예를 봐보자. 해당 Person에 name과 age가 담기지 않았다면 errors가 담기게 될 것이다. 해당 errors들을 클라이언트들을 위해 Json 형태로 담고 싶다면 @JsonComponent와 JsonSerializer에 serialize 메서드를 오버 라이딩해서 구현 가능하다. 그렇다면 우선 person에 name과 age를 입력하지 않고 보내서 err..
-
스프링 부트 MySQL8 연동 IntellijSpring/Spring Boot 2020. 6. 23. 03:01
1. MySQL 커넥터 의존성을 추가한다. MySQL에 접속할 수 있는 커넥터 의존성을 추가해야 한다. datasource에 구현체이다. 1 2 3 4 5 mysql mysql-connector-java runtime Colored by Color Scripter cs Maven 기반 1 2 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' compile 'mysql:mysql-connector-java' Colored by Color Scripter cs Gradle 기반 2. application.properties 설정 파일에 다음과 같이 DataSource를 설정해준다. 1 2 3 4 5 spring.datasource...
-
application.properties 등의 외부 설정Spring/Spring Boot 2020. 6. 13. 23:50
1. application.properties 이런 외부 설정 파일은 App에서 사용하는 여러 설정값들을 정의할 수 있는 기능이다. 이 파일은 스프링 부트가 App을 구동할 때 자동으로 로딩하게 된다. 이렇게 정의되있는 파일 안에 key value 형태로 어떤 값을 정의하게 되면 App에서 참조해서 사용할 수 있게 된다. 그중 아주 간단한 방법을 한번 봐보자 이런 사용할 수 있는 외부 설정에는 properties, 야믈(YAML) 파일, 환경 변수 등이 있고 이 properties 들은 또 우선순위가 나뉜다. 1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 2. 테스트에 있는 @TestPropertySource 3. @SpringBootTest 애노테이션의 pro..
-
내장 서블릿 컨테이너 응용 해보기Spring/Spring Boot 2020. 5. 14. 00:20
스프링 부트가 기본 설정으로 제공해주는 톰캣 대신 제티, 언더토 등의 다른 서블릿 컨테이너를 사용해보자. 기본적으로 우리는 서블릿 기반의 웹 어플리케이션 App을 개발할 때 톰캣을 쓰게 된다. 앞에서 살펴보았던 자동 설정에 의해 톰캣용 자동 설정 파일이 만들어지고 쓰게 된다. build 툴로는 maven을 사용하였는데 다음과 같이 exclusions을 통해 톰캣을 빼주자. 그 후 다음과 같이 jetty 의존성을 추가해주자. 이제 의존성이 들어온 것을 확인을 하고 실행을 해보면 Jetty로 띄워지는 것을 확인할 수 있다. 그러면 웹 서버를 사용하지 않을 수도 있을까? 기본적으로 의존성에 웹과 관련된 기술이 들어와 있다면 스프링 부트는 웹 App으로 만들려고 시도를 한다. 웹과 관련된 의존성을 제거하거나 혹..
-
내장 웹 서버 이해Spring/Spring Boot 2020. 5. 2. 23:53
스프링 부트의 main 메서드에서 Application.run을 하면 웹 서버가 뜨는 것은 스프링 부트를 경험해 봤다면 알고 있을 것이다. 그러면 스프링 부트 자체가 웹 서버일까? 아니다. 스프링 부트는 내장 서블릿 컨테이너를 쉽게 사용하게 해 주고 스프링 프레임워크를 쉽게 사용하게 해주 는하나의 툴이다. 그리고 이 서블릿 컨테이너라 불리는 톰캣, 제티, 언더토 등이 웹 서버이다. 그리고 이 서블릿 컨테이너들은 자바 코드 로 서버를 만드는 기능을 제공한다. 그러면 어떻게 스프링 부트가 톰캣을 띄어줄 수 있는 걸까? 이는 스프링 부트의 자동설정과 관련이 있다. 톰캣, 서블릿 등이 자동 설정으로 등록이 되기 때문에 스프링 부트 App을 실행하면 톰캣이 만들어지고 서블릿이 추가가되는 등 App이 잘 뜨게 되는..