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..
@Service란, bean등록을 위해 명시해주는 애노테이션이다. [ @Repository ] OR [ @Component ] ->구분해서 사용하자 ! why ? 서비스에 bean 주입이 가능하며 애노테이션이 붙어있는 특정한 기능을 실행할 수 있고, AOP에서 사용하기에도 좋다. Autowired란? -필요한 의존 객체의 "타입"에 해당한느 빈을 찾아 주입한다. [ @Autowired ] - required : 기본값 : true (못 찾으면 구동 실패 ) [ 사용할 수 있는 위치 ] -생성자 (스프링 4.3부터는 생략 가능) -setter - filed [ 경우의 수 ] -해당 타입의 빈이 없는 경우 -해당 타입의 빈이 한 개인 경우 -해당 타입의 빈이 여러개인 경우 -> 빈 이름으로 시도, - 같은 ..
[ Spring IoC 컨테이너 ] -BeanFactory -애플리케이션 컴포넌트의 중앙 저장소. -빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. -Inversion of Control : 의존 관계 주입(Dependency Injection) 이라고 한다. -의존 객체를 직접 만들어 사용하는게 아니라 , 주입 받아 사용하는 방법 의존성 주입을 하고 싶을 경우 bean이 되어야한다. [ bean ] Spirng IOC 컨테이너에 등록되는 baen들은 기본적으로 single ton Scope로 등록이 된다. -single ton ->1개만 만들어서 사용하는 것. -프로토타입 ->매번 다른 객체를 만들어서 사용하는것. bean으로 등록 되면 좋은 장점 -라이프사이클 인터페이스 지원. ..
RedirectAttributes 폼 형식의 문서를 작성 후, 서버로 보내면(POST 방식) 곧이어 다른 페이지로 리다이렉트 한다. 문제는 이러한 리다이렉트 방식이 GET 방식 이라 데이터 전송에는 적절하지 않다. 리다이렉트의 특징은 다음 그림과 같다. spitter객체를 보내려고 한다. 리다이렉트가 발생하면 원래 요청은 끊어지고, 새로운 HTTP GET 요청이 시작된다.(브라우저에게 이 URL로 리다이렉트해!) 때문에 리다이렉트 실행 이전에 수행된 모델 데이터는 소멸한다. 따라서 리다이렉트로 모델을 전달하는 것은 의미 없다. 그러나 리다이렉트 방법으로도 데이터를 전달하는 방법이 있다. GET의 특징을 사용하는 것이다. 리다이렉트는 HTTP GET 메소드 방식이라고 앞서 말했다. GET방식은 아래 그림..