스프링

    [Spring] 리다이렉트 동작 원리

    [Spring] 리다이렉트 동작 원리

    폼 형식의 문서를 작성 후에 서버로 보낸다고 가정해보자 (HTTP Form Post 방식). 폼 형식의 데이터를 서버에서 받으면 곧바로 다른 페이지로 리다이렉트 한다. 이 때 새로운 HTTP GET 요청을 시작하는 것이기 때문에 수행된 모델 데이터는 모두 소멸된다. 그렇다면 어떻게 리다이렉트를 할 때 데이터를 전달할 수 있을까? GET의 파라미터 형식으로 정보를 전달한다는 특징을 이용하면 된다. GET/servlet/helloServlet?userId=hello 하지만 중요한 정보가 URL에 그대로 노출된다는 문제점이 있고, 스프링은 이를 해결하기 위해 RedirectAttirbutes 클래스를 제공한다. RedirectAttribute는 리다이렉트가 발생하기 전에 모든 없어질만한 속성을 세션에 복사한다..

    [Spring] 의존성 주입과 동일 타입 클래스 문제 해결

    [Spring] 의존성 주입과 동일 타입 클래스 문제 해결

    의존성 주입을 위해 필드 주입, setter주입, 생성자 주입 등 여러 가지 방법을 이용할 수 있다. 하지만, 프로그램에서 한 번 의존성을 셋팅하고 나면 바꿀 일이 없기 때문에 생성자 주입 방법이 권장된다. 의존성 주입 다음과 같이 NoteService에서 NoteRepository를 필요로 한다고 가정해보자. 이런 경우 생성자 또는 setter를 이용하여 noteRepository의 실제 객체를 주입 받아야 한다. 이런 것을 의존성 주입이라고 한다. public class NoteService { private NoteRepository noteRepository; public NoteService(NoteRepository noteRepository) { this.noteRepository = not..

    [Spring] 다양한 의존 관계 주입 방법

    생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법으로 호출 시점에 딱 1번만 호출이 된다. → 이후에 변화가 없고, 꼭 필요한 필수 의존관계에 사용된다. public class StudnetServiceImpl implements StudentService{ private final StudentRepository studentRepository; private final GradePolicy gradePolicy; @Autowired public StudnetServiceImpl(StudentRepository studentRepository, GradePolicy gradePolicy) { this.studentRepository = studentRepository; this.gradePoli..

    [Spring] 스프링 컨테이너

    [Spring] 스프링 컨테이너

    스프링 컨테이너 생성 스프링 컨테이너를 생성할 때는 ApplicationContext라는 인터페이스를 이용하며, 상황에 맞는 구현 객체를 생성해주면 된다. 스프링 부트의 등장 이후 Annotation을 많이 사용하기 때문에 AnnotationConfigApplicationContext를 주로 이용한다. 인자로는 @Configuration 어노테이션이 붙은 설정 클래스 파일을 넘겨주면 된다. ApplicationContext ac = new AnnotationConfigApplicationContext(Config.class); 스프링 컨테이너의 생성 과정 스프링 컨테이너를 생성할 때 매개 변수로 Configuration 클래스 파일을 넘겨주는데, 스프링 컨테이너는 이 클래스 파일을 참고하여 빈 이름과 객..