Spring (183) 썸네일형 리스트형 [Core] DI Container & Singleton 이번 장에서는 스프링 빈과 싱글톤에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 싱글톤(Singleton) 싱글톤이 적용되지 않은 순수 자바 DI 컨테이너 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생하였다. 이러한 웹 애플리케이션은 일반적으로 동시에 여러 고객의 요청을 처리해야한다. 아래는 스프링을 사용하지 않은 순수 자바를 사용한 DI 컨테이너 코드다. public class PureApplicationConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository().. [Core] BeanFactory & ApplicationContext 이번 장에서는 스프링 컨테이너와 빈 (링크)에 이어서 BeanFactory와 ApplicationContext에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. BeanFactory 스프링 컨테이너인 ApplicationContext의 최상위 인터페이스이며 빈을 관리하고 조회하는 역할을 한다. 스프링 컨테이너와 빈을 살펴본 장에서 사용한 대부분의 기능이 BeanFactory가 제공하는 기능이다. ApplicationContext BeanFactory의 모든 기능을 상속받고 있으며 추가로 필요한 기능들을 상속받아서 우리가 필요한 대부분의 기능을 가지고 있다. 각 인터페이스의 역할은 아래와 .. [Core] Container & Bean 이번 장에서는 스프링 컨테이너와 스프링 빈에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 스프링 컨테이너 일반적으로 ApplicationContext를 스프링 컨테이너라고 한다. 정확히는 ApplicationContext는 인터페이스이며 이를 구현한 구현체들이 스프링 컨테이너가 된다. 설정(구성) 정보를 가지고 있는 ApplicationConfig클래스는 아래와 같다. @Configuration public class ApplicationConfig { @Bean protected MemberService memberService() { return new MemberServiceIm.. [Spring] CVE-2022-22965 Spring4Shell 취약점 CVE 식별자: CVE-2022-22965 이름: Spring Core의 원격 코드 실행 취약점 (Spring4Shell) 등급: High 설명: Spring 프레임워크의 JDK9 버전 이상에서는 원격 공격자가 특정 조건을 충족하는 프레임워크의 매개변수 바인딩 기능을 통해 AccessLog Value 객체 및 악성 필드 값을 획득하여 파이프라인 메커니즘을 트리거할 수 있다. 영향받는 시스템: JDK9 이상, Spring 프레임워크 버전 5.3.17, 5.2.0, 5.2.19 (JDK8 이하에서는 취약점의 영향을 받지 않는다.) Spring4Shell 버전 확인 방법 (IntelliJ 기준): 문제되는 클래스의 패키지 경로 확인 (프로젝트에 포함되는지 확인) Spring 프레.. [Core] Why Spring 이번 장에서는 면접 질문에 자주 등장하는 "왜 스프링을 사용하는가"에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 왜 스프링을 사용하는가 이전 장 (링크)에서 스프링이 무엇인가에 대해서 알아보았다. 추가로 순수 자바로 어플리케이션을 개발하면서 객체들 간의 끈끈한 결합도가 생기는 것을 경험하였다. 이번 장에서는 다시 한 번 순수 자바로 객체들 간의 끈끈한 결합도를 낮춰본다. 순수 자바에서 복잡하게 DI하던 기능을 스프링을 통해서 손쉽게 해결해보면서 "왜 스프링을 사용하는가"에 대해서 알아보도록 한다. 할인 정책의 변경 이전 장에서 주문을 진행할 때 회원의 할인 정책은 고정 금액 할인 정.. [Core] What is Spring 이번 장에서는 면접 질문에 자주 등장하는 스프링이란 무엇인가에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 스프링이란 무엇인가? 이번 장부터 몇 개의 장을 걸쳐서 스프링이란 무엇이며 무엇을 위해 탄생하였는지에 대해서 알아본다. 필자는 아직까지 "스프링이 뭐에요?" 라는 질문을 받은 적은 없다. 존경하는 W사의 모 개발자님은 기술 인터뷰에서 "스프링이 뭐에요"라는 질문을 받았고 "어노테이션의 향연입니다."이라는 답변했다고 한다. 정말 짧고 간결한 정답이라는 생각이 든다. 스프링이 어노테이션의 향연이 된 이유를 찾는다면 스프링의 탄생 배경도 알게 될 것이다. 거대해진 스프링 생태계 때문에.. [Querydsl] Experimental function 이번 장에서는 Spring Data JPA가 제공하는 Querydsl의 기능에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 제목이 Experimental Function인 이유는 기능의 제약이 커서 실무에서 사용하기에는 부족하기 때문이다. 물론 필자의 경험은 아니고 필자가 참고한 강의의 강사인 갓영한님의 말씀이다. QuerydslPredicateExecutor 리포지토리에서 Querydsl의 Predicate(검색 조건)을 받아서 별도의 코드 작성없이 바로 조회하는 기능이다. [공식문서 (링크)](https://docs.spring.io/spring-data/jpa/docs/2.2.3.. [Querydsl] Spring Data JPA & Querydsl 이번 장에서는 Spring Data JPA와 Querydsl을 함께 사용하는 방법에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 리포지토리 구조 Spring Data JPA의 리포지토리는 인터페이스로 이루어져 있으며 개발자가 직접 구현하지 않는다. 하지만 Querydsl을 사용하기 위해서는 조회하기 위한 코드를 직접 작성해야한다. Data JPA 리포지토리에서 Querydsl을 사용하는 것은 불가능하며 아래와 같이 리포지토리 구조를 잡아야한다. JpaRepository: Spring Data JPA에서 기본 CRUD를 제공하는 인터페이스 SoccerPlayerRepository: 기본.. 이전 1 ··· 14 15 16 17 18 19 20 ··· 23 다음