DI 개념 DI(Dependency Injection)란 애플리케이션에서 객체 간의 의존 관계를 외부에서 주입하는 것을 말한다. 의존 관계란 ? 의존 관계란 특정 대상에 의존하여 관계를 맺고 있는 것으로, 의존 대상이 변경되면 의존하고 있는 대상이 영향이 가는 관계이다. 만약 A 클래스에서 B 클래스를 참조하여 사용하고 있다면, A클래스는 B클래스에 의존하고 있다고 한다. DI를 사용하면 객체 지향에서 강조하는역할과 책임을 분리하여,유연하고 변경에 용이한 애플리케이션을 만들 수 있다. DI 예시 아래 예시와 같이 Car 클래스와 Engine 인터페이스, Engine 인터페이스의 구현 클래스 두개가 있다고 가정해보자 Car 클래스는 Engine 인터페이스의 구현 클래스인 GasolineEngine 인스턴..
Study/Spring Framework
개요 이번 게시글에서는 Spring Bean 개념과 등록 방법에 대해 간단하게 정리합니다. Spring Bean이란 ? Spring Bean이란 Spring Container에서 관리하는 객체로 어플리케이션이 기동되는 시점에 Spring Container에 등록되어, 생성 및 관리되며 애플리케이션 종료 시 제거된다. Spring Bean은 컨테이너에 클래스 별로 인스턴스 1개씩만 존재하고, 클라이언트 요청이 올 때 마다 컨테이너에서 꺼내서 사용하게 된다. (싱글톤 패턴) Spring Bean 의 사용 이점 만약 클라이언트 코드에서 의존관계를 주입할 때 new() 로 직접 객체를 생성하게 되면, 의존 받은 객체의 코드가 변경되는 경우 클라이언트 코드에도 영향을 미치게 된다. (역할과 구현이 분리되지 않아서..
개요 이번 게시글에서는 Spring 서버가 웹브라우저에게 컨텐츠를 제공하는 방식에 대해 알아봅니다. 정적 컨텐츠 방식 정적인 HTML파일을 그대로 웹브라우저에 제공하는 방식으로 [resource/static] 폴더 하위의 HTML 파일을 보여준다. Spring 서버가 정적 컨텐츠를 제공하는 순서는 아래와 같다. 1. 웹브라우저 주소창에 서버 주소와 정적 html 파일명을 붙여서 입력한다. (localhost:8080/hello-static.html) 2. spring boot의 내장 톰캣 서버에서는 먼저 hello-static이라는 컨트롤러가 있는지 확인한다. 3. hello-static이라는 컨트롤러가 없다면, resources/static 폴더 하위에 hello-static.html 파일을 찾아서 웹..
타임리프 (Thymeleaf) 란 ? 타임리프 (Thymeleaf) 란 컨트롤러가 전달하는 데이터를 통해 동적으로 화면을 만들어주는 템플릿 엔진이다. 템플린 엔진이란 지정된 템플릿 양식에 데이터 모델을 전달하여 동적 컨텐츠를 만들어주는 소프트웨어를 말한다. 초기 스프링에서는 서버 사이드에서 동적인 컨텐츠를 제공하기 위해 JSP 방식을 주로 사용했다면, 스프링 부트로 넘어오고 나서는 Thymeleaf 템플릿 엔진을 많이 사용한다. Thymeleaf은 아래와 같은 특징이 있다. 1. 서버사이드 HTML 렌더링 템플릿 엔진은 백엔드 서버에서 HTML을 동적으로 렌더링하는 용도로 사용된다. 2. 네츄럴 템플릿 타임리프는 순수 HTML을 유지하는 특징이 있다. 만약 백엔드 서버가 기동중이지 않는다면 정적인 순수 ..
개요 자바 객체의 특정 필드를 제외하고 직렬화 / 역직렬화 해야 하는 경우 jackson 라이브러리의 @JsonIgnore 또는 @JsonProperty 어노테이션을 제외 시키고자 하는 필드 위에 추가하면 된다. @JsonIgnore : 해당 어노테이션을 붙인 객체의 필드는 직렬화 / 역직렬화 할 때 모두 해당 필드를 읽지 않게 하는 설정 @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) : 해당 어노테이션을 붙인 필드는 직렬화 시에는 무시되지만, 역직렬화 시에는 해당 필드를 읽도록 하는 설정 @JsonIgnore @JsonIgnore는 해당 어노테이션이 붙은 필드는 직력화 / 역직렬화 할 때 읽지 않는다. 아래는 CommentDto라는 객체를 Object..
개요 회사 업무 중 Spring Boot 서버에서 2개의 서로 다른 DB에 접근해야 하는 업무가 생겨 다중 데이터베이스 환경을 구축하게 되었다. 다중 데이터베이스 접근 환경 구축 순서는 순서는 아래와 같다. 1. 패키지 구조 변경 (Mapper 인터페이스, xml파일 패키지로 감싸기) 2. 서버 설정파일에 DB 연결정보 작성 3. Config 파일 생성 및 수정 프로젝트 패키지 구조 변경 다중 DB를 사용할 때는 보통 Oracle, Mysql 과 같이 DBMS가 다른 케이스에 사용하기 때문에 쿼리 파일을 별도로 관리하는 것이 좋다 (패키지도 나누는 것이 관리하기 편하다) 아래와 같이 Mapper 인터페이스 파일을 관리하는 패키지와 실제 구현체인 xml 쿼리파일을 관리하는 패키지를 두개로 나눈다 서버 설정..