웹페이에서 회원가입이나 글작성 등 post 요청을 한 페이지의 결과창에서 새로 고침을 했을경우 

중복되어 가입되거나 글이 여러개 올라가는등  동일한 작업 및 요청이 계속 되는 경우는 패턴이 안지켜졌을 가능성이 높다.

 

위의 방법을 해결 방법을 해결 하기 위해선 redirect 을 활용하는것이 좋다.

//적용 전 예시 
@PostMapping("/add")
public String addMember(Member member) {
memberRepository.save(member);
return "redirect:/member/";
}

//적용 후 예시
@PostMapping("/add")
public String addMember(Member member) {
memberRepository.save(member);
return "redirect:/member/" + member.getId();
}

리다이렉트의 영향으로 리다이렉트의 주소로 지정 되기때문에 새로 고침하여도 중복 요청이 처리 되지 않게 될 수 있다.

이런 방식을 PRG 패턴이라고 한다.

'Spring Framework' 카테고리의 다른 글

@Configuration  (0) 2023.09.08
spring  (0) 2023.08.31
의존성 주입(DI)  (0) 2023.08.21
@RequestBody, @ResponseBody  (0) 2023.08.21
Spring Boot 설정하기(on site)  (0) 2022.09.23

싱글톤 컨테이너 사용을 위한 어노테이션 

 

싱글톤 컨테이너 란?

 

싱글턴 패턴을 적용하지 않아도 객체 인스턴스를 *싱글톤으로 관리 해줌

*클래스의 인스턴스가 한개만 생성되도록 보장하여 객체 인스턴스를 2개 이상 생성되지 못하도록 막아 주는것 

 

스프링 컨테이너는 싱글톤 컨테이너 역활을 하게 되고 기존 싱글턴 패턴의 모든 단점을 해결 하면서 싱글톤으로 유지 해주는 것 

  • 싱글톤 패턴을 위한 코드들을 생략 가능 
  • DIP, OCP, 테스트, private 생성자로 부터 자유롭게 싱글톤 사용 가능 

 

주의점

객체 인스턴스를 공유하기 때문에 상태를 유지(stateful)하게 설계하면 안되어 무상태(stateless)로 설계 해야함

특정 클라이언트에 의존적인 필드가 있으면 안되고 특정 클라이언트가 값을 변경 할 수 있는 필드가 있으면 안됨

가급적 읽기만 가능하도록 하는것이 좋다.

공유 값이 설정되어 있는 경우 큰 장애가 발생할 수 있으니 조심해야함 

 

참고 김영한 스프링 기초 핵심 - 싱글톤 컨테이너

'Spring Framework' 카테고리의 다른 글

PRG(Post-Redirect-Get) 패턴  (0) 2023.10.05
spring  (0) 2023.08.31
의존성 주입(DI)  (0) 2023.08.21
@RequestBody, @ResponseBody  (0) 2023.08.21
Spring Boot 설정하기(on site)  (0) 2022.09.23

스프링은 DI, DI 컨테이너 로 다형성+ OCP ,PID 를 가능하게 지원 

-DI(Dependency injection) : 의존 관계 의존성 주입

클라이언트 코드의 변경 없이도 기능확장 가능 

부품을 교체하듯이 개발이 가능

'Spring Framework' 카테고리의 다른 글

PRG(Post-Redirect-Get) 패턴  (0) 2023.10.05
@Configuration  (0) 2023.09.08
의존성 주입(DI)  (0) 2023.08.21
@RequestBody, @ResponseBody  (0) 2023.08.21
Spring Boot 설정하기(on site)  (0) 2022.09.23

(스프링)DI란?

객체 내부에서 직접 호출(new 연산자) 하는 대신에 외부에서 객체를 생성해서 넣어주는 방식

두 객체 간의 결합도를 낮추고 유연성을 높이기 위해 사용

 

1. 생성자 주입

생성자를 통해 의존 관계를 주입하는 방법

주입받은 객체가 변하기 않거나 객체의 주입이 필요한 경우 사용된다.

@RequiredArgsConstructor 사용시 final 로 지정한 경우 @Autowired 를 생략 가능

 

실무에서 사용시 제일 추천하는 방식

 

2. 필드 주입

필드에 바로 의존관계를 주입하는 방법 

외부에서 접근이 불가능함 

 

 

3. 수정자(Setter) 주입

수정자(Setter) 를 통해서 의존 관계를 주입하는 방법

주입받는 객체가 변경이 될 가능성이 있는 경우에 사용 

'Spring Framework' 카테고리의 다른 글

@Configuration  (0) 2023.09.08
spring  (0) 2023.08.31
@RequestBody, @ResponseBody  (0) 2023.08.21
Spring Boot 설정하기(on site)  (0) 2022.09.23
스프링 컨테이너(Spring Container)  (0) 2022.08.17

+ Recent posts