본문 바로가기

Spring

[Spring] 빈의 생명주기 스프링 관련 질문 중 "스프링 빈의 생명주기"에 관련된 내용을 공유하고자 합니다. 스프링 IoC 컨테이너 생성 스프링 IoC 컨테이너는 ApplicationContext 인터페이스를 구현한 객체로 빈(자바 객체)를 객체화, 구성, 초기화를 담당합니다. 스프링 빈 생성 정의된 빈을 객체화 하는 과정입니다. 자바 어노테이션 기반, XML, Grooby 등의 방법으로 정의가 가능합니다. 생성자, 정적 팩토리 함수, 인스턴스 팩토리 함수 등의 방법으로 객체화를 진행합니다. 빈의 의존성 주입 빈에서 필요로 하는 의존관계의 다른 빈을 주입하는 과정입니다. Field, Setter, Constructor 방식으로 주입할 수 있습니다. 초기화 콜백 수행 초기화가 완료되면 3가지 방법의 콜백을 통하여 후처리를 진행합니다.. 더보기
[JSON] Json에 클래스 상속 적용하기 (JsonSubType) 상속받은 클래스에 대한 JSON 처리를 하려면 JsonSubType을 활용해야합니다. 클래스 구조 활용방법을 위한 클래스가 다음과 같이 있다고 가정하겠습니다. package me.oofbird.vo; public class MainClass { private String type; public void setType(String type) { this.type = type; } public String getType() { return this.type; } } package me.oofbird.vo.sub1; import me.oofbird.vo.MainClass; public class Sub1MainClass extends MainClass { Sub1MainClass() { this.setType.. 더보기
[JPA] PostgreSQL jsonb 타입 설정하기 Spring Data JPA + PostgreSQL을 사용중에 객체정보를 테이블에 저장할 필요가 있을 수 있습니다. 객체를 JSON String으로 변환하여 저장하는 방법도 있지만, 여기서는 JSONB 타입으로 저장하는 방법을 설명하겠습니다. 의존성 추가 먼저 Spring Data JPA 기반이 되는 Hibernate의 type을 추가하기 위하여 vladmihalcea의 hibernate-types를 추가합니다. com.vladmihalcea hibernate-types-52 2.10.4 TypeDef 추가 특정 타입에 사용되는 클래스를 정의하기 위하여 @TypeDef 어노테이션을 사용합니다. 사용위치는 Entity 클래스에 정의합니다. package me.oofbird.jpa import org.hib.. 더보기
[SpringBoot] 실행 스크립트 작성하기 Spring Boot를 빌드하고 나면 jar 파일이 생성됩니다. 이것을 Ubuntu에 배포하고 실행할 때마다 "java -jar" 명령을 입력하고, 종료할 때마다 "ps -ef | grep jar"로 프로세스ID를 찾아서 종료하는 것이 많이 번거롭네요. 그래서 재기동관련 스크립트를 다음과 같이 작성할 수 있습니다. #!/bin/bash if [ -f process.pid ]; then kill -9 `cat process.pid` fi nohup java -jar process.jar > /dev/null 2>&1 & echo $! > process.pid 더보기
[SpringBoot] JSON의 없는 속성 무시하기 Spring Boot에서 기본으로 사용하는 Jackson 라이브러리에서 기본적으로 없는 속성이 정의된 경우 오류가 발생합니다. 아래같은 경우 기본설정에서는 Exception이 발생합니다. // JSON { "test" : 1, "test2" : 2} // Class class Test { int test; } 무시하고자 할 경우 application.yml 파일에 옵션을 추가하면 됩니다. spring: jackson: deserialization: fail-on-unknown-properties: false 참고 : https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/howto-spring-mvc.html#howto-customize.. 더보기
[SpringBoot] Eclipse에서 pom.xml의 Unknown 오류 Eclipse를 사용해서 SpringBoot 프로젝트를 구성하는데 계속 pom.xml에 오류가 표시됩니다. 사유는 Unknown... m2e 플러그인 문제로 판단되며 해결방법은 다음과 같습니다. SpringBoot 버전변경 2.1.5.RELEASE에서 2.1.4.RELEASE로 변경하면 해결됩니다. org.springframework.boot spring-boot-starter-parent 2.1.4.RELEASE maven-jar-plugin 버전변경 현재 문제가 발생되는 3.1.2에서 3.1.1로 변경합니다. 3.1.1 m2e 플러그인 업데이트 Help > Install New Software를 사용하여 m2e 플러그인을 업데이트 합니다. Work with에 https://download.eclips.. 더보기
[SpringBoot] Spring Boot 프로젝트 구성하기 개요 웹 프로젝트를 개발하게 되면 보통 WAR 파일을 생성하고 WAS(Tomcat, Webtob 등)에 기동하는 방식을 사용하게 될 것 입니다. 그런데 개발을 하다보면 이것을 그냥 실행파일(또는 jar 파일 하나)로 만들 수 없을까 하는 의문이 생기게 됩니다.Spring Boot라는 프로젝트를 활용하면 해결할 수 있습니다. Spring Boot 내부적으로 Embedded Tomcat을 활용하여 웹서비스를 기동하게 됩니다. 프로젝트 만들기pom.xml에 Spring Boot 추가하기관련 라이브러리를 수작업으로 진행할 수 도 있지만 보통의 스프링 프로젝트는 Maven을 이용해서 관리하게 됩니다. (Gradle도 많이 사용하지만 여기서는 Maven만 다루겠습니다)프로젝트의 pom.xml 파일에 Spring B.. 더보기