Lombok 1. 왜 쓰죠? 새로운 라이브러리를 보았을때에는 항상 왜 사용하는지를 파악하는 것이 우선인것 같습니다. 당연시 여기는 것들이 가끔은 당연하지 않은 경우가 있습니다.. 왜 쓸까를 한번 생각해 보시죠. Lombok 이전의 코드 우리는 프로젝트를 진행하면서 DB와 데이터를 주고받기 위해 DTO, VO Class들을 작성하여 데이터를 손쉽게 다루게 됩니다. 그런데 항상 반복되는 코드들이 눈에보입니다. public class Student { private String id; private String name; public Student(){} public Student(String id, String name) { this.id = id; this.name = name; } public..
Resource 추상화 Resource 추상화라고 하니까 뭔가 말이 거창하고 어려워 보이네요. 간단하게 의미를 정의해보겠습니다. Resource 추상화는 java.net.URL을 추상화 한 것 입니다. 우선 java.net.URL이 무엇인지를 알아보아야 할 것 같습니다. java.net.URL 이란 우선 URL은 인터넷상의 주소를 표현하는 방법을 의미합니다. URL 클래스는 웹 상에 존재하는 자원에 접근할 때 사용하는 클래스입니다. URL 클래스를 사용하면 위와 같이 간단히 웹상의 자원을 가져올 수 있습니다. 이유 java.net.URL을 왜 추상화 했을까요? 기존 java.net.URL 클래스에는 classpath를 기준으로 resource를 가져오는 방법이 없었다고 합니다. 하지만 classpath,..
데이터 바인딩이란? -사용자가 입력한 값을 어플리케이션에서 사용하는 도메인으로 매핑하는 기능을 일컫습니다. -Spring MVC에서 Controller 안의 Mapping 메소드들에서 사용자가 전달한 값을 자동으로 매개변수에 입력된 Command 객체로 변환되는 것도 이 데이터바인딩을 통해서 가능한 것입니다. 데이터 바인딩 필요 이유 why? 왜 바인딩이 필요한가? -사용자가 입력한 값은 서버에서 기본적으로 String으로 인식을 합니다. HttpServletRequest 객체의 getParameter() 메소드가 반환하는 값이 String인 것을 보면 알 수 있습니다. 이 때문에 서버 프로그램에서 이 데이터를 상황에 맞게 처리하기 위해서는 특정 객체로 맵핑을 할 필요가 있습니다. 간단히 예제를 통해 알..
Validation 이란? -애플리케이션에서 사용하는 객체들을 검증할 때 사용하는 interface. -실제 검증보단 간단한 검증을 위한 @(어노테이션)을 사용하고 @으로 검증할 수 없는 복잡한 검증 과정이 필요한 경우, 사용자가 검증을 커스텀하기 위해 구현한다. Event public class Event { Integer num; // null 이면 안됨 String title; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getTitle() { return title; } public void setTitle(String title) { th..
1.ApplicationEvnetPublisher 란? ->디자인 패턴 중 하나인 Observer Pattern과 유사한 기능을 합니다. 다시 말해 Spring Framework를 통해 손쉽게 Observer Pattern을 구현하는 것입니다. 2.언제 사용하나요? (관련 글 - https://www.javacodegeeks.com/2012/08/observer-pattern-with-spring-events.html) Observer Pattern을 사용할 때를 떠올리면 됩니다. 이벤트를 발생하는 Publisher와 이를 구독하는 Observer(or Subscriber)사이의 결합도를 낮추면서도 이벤트를 Observer에게 전달을 하고싶을 때 사용하게 됩니다. 3.구조 3.1ApplicationEve..
IoC 컨테이너의 Environment에 대해서 알아보겠습니다. Environment는 ApplicationContext가 가지고있는 기능중 하나로 Application에 등록되어있는 여러 환경들을 제어하고 이용할 수 있도록 도와주는 기능입니다. *ApplicationContext - IoC 컨테이너가 갖추어야 할 기능들을 정의하고 있는 인터페이스로 다른 추가적인 기능들을 상속받고 있습니다 그 중 하나가 바로 EnvironmentCapable입니다. Environment의 기능 1. Profile Profile이란 환경에 따라 필요한 Bean들이 달라질 수 있는데 이것을 쉽게 관리할 수 있도록 도와주는 기능입니다. 예를 들어 Test 환경에서 사용할 Bean들과 Develop중 사용할 Bean들 그리고 ..
Bean의 Scope이란? -Bean의 Scope란 Bean의 생성방식을 결정하는 것입니다. ex) Scope에 따라서 Bean이 Application당 1개만 생성(singleton방식)되거나, 필요할 때마다 새로 생성을 한다던지 하는 그런한 방식을 의미합니다. ※ single ton ? - 해당 애플리케이션 전반에 걸쳐서 해당 bean의 instance가 오직 1개뿐인 경우. 2. Bean의 Scope 종류 Singleton 어플리케이션이 동작하는동안 단 한개만 만들어진다는 의미입니다. Spring에서의 Bean들은 별도의 설정이 없다면 기본적으로 Singleton으로 생성이 됩니다. 즉, 지금까지 생성했던 Bean들은 모두 Singleton으로 주입이 되었던 것입니다. 예제를 통해 조금 더 자세히 ..
@Componentscan -@Component어노테이션 및 streotype(@Service, @Repository, @Controller.)어노테이션이 부여된 Class들을 자동으로 Scan하여 Bean으로 등록해주는 역할을 하는 어노테이션입니다. 이전 xml파일에 를 이용해 지정해주었던 것을 Java파일을 이용하여 bean을 scan하기 위해서 생겨났습니다. 예제 1. 프로젝트 구조 Application Class : Main ApplicationConfig Class: Bean설정을 어노테이션 기반으로 처리하기 위한 클래스 BookRepository Class: Bean으로 등록되기 위한 Class 2. Class 2.1 BookRepository @Repository public class Bo..