CS/Spring

    [Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor의 차이점 간단 정리.

    [Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor의 차이점 간단 정리.

    스프링 코드를 보다 보면 항상 엔티티 클래스 위에 저 세가지 어노테이션이 종종 붙어 있는 경우를 보았다. 지난 포스트에 DI의 세가지 방법에 관한 글을 정리하고 나니 아래의 세 어노테이션을 정리할 필요성이 느껴져 해당 어노테이션들도 공부해보려고 한다! @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor @NoArgsConstructor @NoArgsConstructor는, 매개변수를 갖지 않는 기본 생성자를 생성해준다. @NoArgsConstructor는 주로 access = AccessLevel.PROTECTED 를 설정하여 무분별한 객체 생성을 막는 용도로 쓰인다. 해당 속성을 부여하면 기본 생성자에 접근 제어가 되므로, 결국 해당 클래스..

    [Spring] DI의 세 가지 방법(필드 주입, 생성자 주입, setter 주입)

    먼저 DI에 대해서 다시 한번 짚고 넘어가보자면, DI(Dependency Injection)이란, 어떤 코드에서 필요로 하는 의존성을 외부에서 주입(injection)하는 방법을 말합니다. DI의 목적은 한 코드 내에서 생성과 구현의 책임을 분리하기 위함이고, 이를 통해 런타임 의존성을 갖게 되어 결합도를 낮추고 유연한 코드 설계를 가능하게 해 주는 기법입니다. DI 설명을 위해 예시 코드로 Adder(두 수를 더하는 클래스)를 작성했습니다. DI의 세 가지 방법 - 1. setter 주입 public class Adder { private int number1; private int number2; public void setNumber1(int value){ this.number1 = value; ..

    [Spring] 스프링에서 빈 객체를 등록하는 방법(@Bean, @Component)

    [Spring] 스프링에서 빈 객체를 등록하는 방법(@Bean, @Component)

    https://youwjune.tistory.com/37 [Spring] DI와 IOC에 대해서 스프링을 막 공부하기 시작하는 비기너에게 DI와 IOC에 대한 개념은 너무나도 중요한 것 같습니다! 하지만, 이를 왜 사용할까요? DI와 IOC를 활용하면 어떤 이점이 있을까요? Spring에서는 DI와 IOC가 youwjune.tistory.com 지난번에 DI와 IOC를 공부하며, 자바와 다르게 스프링에서는 객체의 대한 생성부터 소멸까지 모든 관리 책임을 스프링이 갖고(IoC), 필요한 경우 해당 객체를 전달(DI) 한다고 했다. 그렇다면, 스프링은 객체를 대체 어떻게 관리할까? POJO 객체란? 스프링 빈(Bean)이란, 스프링에서 관리하는 자바 POJO 객체라고 말할 수 있다. 사실 이 POJO 객체에..

    [Spring] 비즈니스 로직이란?

    비즈니스 로직이란? 우리는 흔히 MVC 패턴에서 Service Layer에 대해서 Business 로직을 처리하는 Layer이라고 정의하곤 한다. 하지만, 우리가 흔히들 말하는 비즈니스 로직이란 대체 무엇일까? 이에 대한 내 주관적인 생각을 적어보고자 한다. Business Logic 우선 내가 생각하는 Business Logic이란, 실제 어떤 프로그램에서 request의 처리나, 특정한 기능 수행을 위해 데이터를 처리하는 실질적인 로직을 뜻한다고 정의할 수 있을 것 같다. 다시 말해, 사용자의 요구사항을 해결하기 위한 실질적인 코드라고 한 문장으로 정의할 수 있다. 실제로 MVC 패턴에서는 비즈니스 로직이 담긴 Layer는 오직 Service Layer로 제한되고 있는데, 사실상 실질적인 데이터의 처..

    [Spring] Controller, Service, Repository

    [Spring] Controller, Service, Repository

    Spring에서 프로젝트를 시작하면, 항상 Controller, Service, Repository를 너무 당연하듯 분리하곤 한다. 하지만, 이에 대해 왜 이렇게 분리하는지 생각해 본 적 있는가? 이번 포스트를 통해 Controller, Service, Repository에 차이에 대해 명확히 알아가는 시간을 가져 보려고 한다. MVC 패턴이란? MVC 패턴이란, 사용자 인터페이스로부터 비즈니스 로직을 분리하여, View - Controller - Model의 3가지로 분류하는 패턴이다. 그렇다면, MVC 패턴은 왜 등장했을까? MVC 패턴이 등장하기 이전에, Spring 에서는 JSP를 사용하곤 했었다. 이는 Controller 영역에 View 영역을 같이 구현하는 방식이며, 사용자의 요청을 JSP가 ..

    [Spring] Entity, DTO, VO 무슨 차이야?

    앞서 DDD에 대한 포스트를 작성하며 Domain에 대해서도 살펴보게 되었다. 최근에 Domain이랑 Entity에 대한 차이가 무엇이냐는 질문을 받았는데, 나는 여태껏 거의 동일한 개념이라고 생각해 왔다. 저번 포스트에 이어 이번 포스트에는 Entity가 무엇인지 정리하고, 많은 사람들이 혼용하는 DTO와 VO에 대해서도 함께 정리하려고 한다. Entity란? Entity 클래스는 실제 DB의 Relation과 1:1로 매핑되는 클래스로, DB Relation 내에 존재하는 attribute만 속성(필드)로 가져야 하는 것이 특징이다. Domain Logic만을 가지고, Presentation Logic(View)를 가져서는 안된다. 가급적 외부에서는 Entity 클래스의 필드에 직접적으로 접근하지 않..

    [Spring] DI와 IOC에 대해서

    스프링을 막 공부하기 시작하는 비기너에게 DI와 IOC에 대한 개념은 너무나도 중요한 것 같습니다! 하지만, 이를 왜 사용할까요? DI와 IOC를 활용하면 어떤 이점이 있을까요? Spring에서는 DI와 IOC가 어떻게 이루어지고 있을까요? 위에 물음에 답을 해 보는 시간을 가져보려고 합니다!' 1. DI(Dependency Injection)이란? 먼저, 한 사람이 폰을 구매하는 코드를 같이 살펴봅시다! public class Main { public void main(String[] args) { Person jobth = new Person(“잡th”); jobth.buy(); } } class Person { … void buy() { SamsongPhone samsong = new Samsong..