Spring

· Spring
이전 포스팅까지는 클래스 타입으로 빈을 조회해서 자동으로 의존관계 주입하는 방식을 사용했다. 그런데 만약 의존관계 자동 주입 시 같은 클래스 빈이 두 개 이상이라면 스프링에서는 NoUniqueBeanDefinitionException 오류가 발생한다. 이렇게 빈이 여러 개일 때에는 어떻게 해야 할까? 해결하는 방법은 여러 가지가 있다. @Autowired 필드명 매칭 @Qualifier 사용 @Primary 사용 하나씩 알아보자 @Autowired 필드명 매칭 먼저 타입 매칭을 시도한 후에 빈이 여러 개라면 추가로 동작하는 기능이다. 필드명을 특정 구현 클래스 이름으로 설정해두면 해당 클래스 빈으로 매칭을 시도한다. 예를 들어 다음과 같은 필드를 선언한다면 DiscountPolicy가 여러 개일 때 ra..
· Spring
이 글에서 설명하는 것 이 글에서는 CORS가 발생했던 이유와 원인을 다룬다. 또한 스프링 CORS 설정, Nginx 리버스 프록시 설정을 통해서 이를 해결하고 curl을 이용해서 CORS 문제가 해결되었는지 확인하는 과정 또한 살펴본다. 참고로 이 글에서 다루는 스프링 CORS 설정은 스프링 시큐리티와 연관되어 있다. + CORS란? https://developer.mozilla.org/ko/docs/Web/HTTP/CORS 문제의 발생 React 개발자가 로컬에서 개발 서버로 요청을 보냈는데 CORS 에러가 발생했다고 한다. 그래서 간단하게 Access-Control-Allow-Origin 헤더를 "*" 로 설정하여 전체 오리진 요청을 허용하려고 했지만 그로 인해 또다시 문제가 발생했다. https:..
· Spring
스프링에는 4가지 정도의 의존관계 주입 방법이 있다. 생성자 주입 수정자 주입 필드 주입 일반 메서드 주입 일반 메서드 주입은 잘 사용하지 않기 때문에 위 세가지만 다뤄보자. 생성자 주입 대다수 개발자가 가장 선호하는 의존관계 주입 방법일 것이다. 객체 의존관계의 불변성을 보장받을 수 있고 테스트 코드를 작성할 때 객체 의존관계를 설정하기 편리하다. 또한 필드에 final 키워드를 추가하면, 생성자 주입을 이용할 때 필요한 의존 객체를 전달받지 못했을 경우 컴파일 에러가 발생하게끔 유도할 수 있다. 롬복에서는 @RequiredArgsConstructor 어노테이션을 사용하면 final 필드를 이용한 생성자를 생성해준다. @RequiredArgsConstructor 또는 @AllArgsConstructor..
· Spring
스프링의 빈을 등록하려면 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열해야 한다. 그런데 만약 빈의 개수가 많아지면 일일이 하기 귀찮아진다. 그래서 스프링은 설정 정보가 없어도 빈을 등록할 수 있는 컴포넌트 스캔이라는 기능을 제공한다. 말 그대로 전체 파일을 스캔해서 빈을 등록하는 것으로, 스캔 범위를 제한하거나 스캔에서 제외하고 싶은 대상을 특정할 수도 있다. 이전의 AppConfig가 아닌 컴포넌트 스캔을 이용한 AutoAppConfig 클래스를 작성해보자. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.cl..
· Spring
싱글톤을 이용하면 시스템 내에서 객체 인스턴스의 유일함을 보장할 수 있고 객체 생성 비용이 절약되며, 자원을 공유하기 좋다. 이러한 장점 때문에 싱글톤은 자주 언급되고 유명한 디자인 패턴이기도 하다. 하지만 싱글톤 패턴도 단점이 있다. 다음과 같이 싱글톤을 구현했다고 가정해보자. public class SingletonService { private static final SingletonService instance = new SingletonService(); private SingletonService() {} public static SingletonService getInstance() { return instance; } } 이런 싱글톤 패턴은 생각보다 많은 단점이 있는데 싱글톤 패턴을 구현하..
· Spring
이전 포스팅에서 우리는 관심 영역을 분리함으로써 기존 코드를 개선했다. 그 과정에서 만들었던 AppConfig를 어떻게 하면 스프링으로 전환할 수 있는지 오늘 글에서 다룰 것이다. https://braindisk.tistory.com/26 객체 지향 설계 원칙을 잘 지키는 법 이전 포스팅에서 좋은 객체 지향 설계란 무엇인가 생각해보았다. https://braindisk.tistory.com/25 좋은 객체 지향 설계란 좋은 객체 지향 설계의 목표는 프로그램이 유연하고 변경이 용이하게 설계하는 braindisk.tistory.com 우리가 만들었던 AppConfig 클래스를 스프링의 설정 파일로 만들 것이다. 스프링의 설정 파일로 만들기 위해서는 클래스 위에 @Configuration 어노테이션을 붙여주고..
@xftg77g
'Spring' 카테고리의 글 목록 (3 Page)