스프링
-
[Spring] 리액트(React) - 스프링(Spring) 연동 시 발생하는 CORS 이슈 해결하기Backend Dev/Spring Framework 2023. 3. 5. 15:59
웹 개발 팀 프로젝트를 진행하다 퍼블리싱과 API 개발을 마친 뒤 프론트엔드 쪽에서 API 테스트 도중 다음과 같은 CORS 에러가 발생하였다. "Access to XmlHttpRequest at A from origin B has been blocked by CORS policy : Response to preflight requeset doesn't pass access control check: No "Access-Control-Allow-Origin" header is persent on the requested resource" 이는 자바스크립트에서 서로 다른 도메인 소스에 대해 ajax 요청 API 호출 시 웹 브라우저가 하나의 서버 연결만 허용하도록 설정되어 있기에 발생하는 에러이다. COR..
-
[Spring] 컴포넌트 스캔과 의존관계 자동 주입Backend Dev/Spring Framework 2022. 3. 15. 17:00
컴포넌트 스캔 스프링 빈 등록 시 @Bean 또는 XML의 을 통해 설정 정보에 등록할 스프링 빈을 직접 나열하고, 의존 관계도 직접 명시했으나 등록해야 할 빈이 많아진다면 등록하는데 시간도 들뿐더러 실수의 가능성이 높아질 것이다. 스프링에서는 수동 구성(설정) 정보가 없어도 자동으로 스프링 빈을 등록해주는 @ComponentScan과 의존 관계도 자동으로 주입해주는 @Autowired 기능을 제공한다. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } @ComponentScan 을 구성 정..
-
[Spring] 싱글톤 컨테이너Backend Dev/Spring Framework 2022. 3. 8. 21:49
웹 애플리케이션과 싱글톤 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했으며 대부분 스프링 애플리케이션은 웹 애플리케이션이다. 이러한 웹 앱은 보통 여러 클라이언트가 동시에 요청을한다. 순수 자바 코드로 구현된 DI 컨테이너(AppConfig)의 경우 클라이언트에서 요청을 할 때마다 아래와 같이 객체를 새로 생성하여 서로 다른 참조값을 갖기에 메모리 낭비가 심한 문제가 있다. 이는 해당 객체가 딱 1개만 생성(같은 참조값)되고, 공유하도록 설계하면 되는데 이를 싱글톤 패턴이라 한다. public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new ..
-
[Spring] 객체 지향 설계의 적용Backend Dev/Spring Framework 2022. 3. 8. 03:14
객체 지향의 원리와 설계 원칙을 소스코드로 적용해보려 하고, 스프링을 사용하지 않는 순수 자바로만 코드를 작성하는 단계에서 생기는 문제점부터 짚어볼 것이다. 아래의 클라이언트 코드를 변경해야 하는데, 왜 변경이 필요한 것일까? public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } OrderServiceImpl이 DiscountPolicy라는 인터페이스에 의존하면서 구체 클래스에도 의존을 하기에 DI..
-
[Spring] 좋은 객체 지향 설계를 위한 5원칙, SOLIDBackend Dev/Spring Framework 2022. 3. 3. 16:07
이전 포스팅에서 스프링과 객체 지향 프로그래밍의 컨셉과 핵심에 대해 알아보았는데 이번에는 스프링 프레임워크가 객체 지향 설계를 하는 데 있어서 어떤 이점과 관계가 있는지 알아보려 한다. 스프링에서 지원하는 제어의 역전(IoC)이나 의존관계 주입(DI)과 같은 기술은 다형성과 함께 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 역할과 구현의 분리에 대한 이해가 부족하다면 아래 글을 통해 내용을 숙지하고 보는 게 좋을 것 같다. [Spring] 스프링과 객체 지향 설계 Spring이란? 스프링을 나타내는 의미는 문맥에 따라 다양한데 스프링 DI 컨테이너 기술, 스프링 프레임워크, 스프링 생태계 자체를 의미하기도 한다. 스프링의 주 기술은 스프링 DI 컨테이너, AOP, 6ro-29.tistory.com ..
-
[Spring] 스프링과 객체 지향 설계Backend Dev/Spring Framework 2022. 3. 3. 05:24
Spring이란? 스프링을 나타내는 의미는 문맥에 따라 다양한데 스프링 DI 컨테이너 기술, 스프링 프레임워크, 스프링 생태계 자체를 의미하기도 한다. 스프링의 주 기술은 스프링 DI 컨테이너, AOP, 이벤트와 같은 것들이 있다. 핵심적인 건 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크라는 것이다. 객체 지향 언어인 자바 언어 기반의 프레임워크로써, 객체 지향 언어가 가진 강력한 특징을 살려낸다. 그렇다면 스프링 부트라는 것도 자바로 백엔드 개발 공부를 하다보면 들어봤을 법한 단어인데, 이는 스프링을 편리하게 사용할 수 있도록 지원해주며 스프링 프레임워크 사용 시 때에 따라 필요한 라이브러리들을 불러올 수 있게 해준다. 스프링 부트의 대표적인 특징은 다음과 같다. - 단독으로 실행..