Spring Boot/Core

    [Spring Core] AOP(Aspect Oriented Programming)

    [Spring Core] AOP(Aspect Oriented Programming)

    AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming)은 관점 지향 프로그래밍을 의미한다. 프로그래밍을 할 때 발생하는 공통적인 기능들을 적용하기 위해 상속이 필요한데, Java 에서는 다중 상속을 받아 공통 기능을 부여하기에는 중복 코드 및 종속적인 변경이 이루어져야 해서 한계가 있다. 이러한 문제점을 해결하기 위해 OOP를 돕는 보조적인 기술인 AOP가 적용되어야 한다. AOP는 비즈니스 로직과 같은 핵심적인 관심 사항과 보안, 로깅, 트랜잭션과 같은 공통 관심 사항을 분리시키고 각각을 모듈화 하는 것을 의미한다. 핵심 관심 사항과 공통 관심 사항을 분리함으로써의 이점으로는 중복 코드 제거, 높은 생산성, 재활용성 극대화 등이 있다. 횡단..

    [Spring Core] Spring DI(Dependency Injection)

    DI(의존성) 주입 방법 생성자 주입 수정자 주입(setter) 필드 주입 일반 메서드 주입 1. 생성자 주입 생성자를 통해서 의존성을 주입 받는 방법이다. 생성자에 @Autowired를 붙이면 스프링 컨테이너에 @Component로 등록된 Bean에서 생성자에 필요한 Bean들을 주입한다. 특징 생성자 호출 시점에 딱 1번만 호출된다. 불변과 필수 의존 관계에 사용된다. 생성자가 1개만 존재할 경우, @Autowired 생략이 가능하다. NullPointerException을 방지할 수 있다. 주입 받을 필드를 final로 선언 가능하다. @Component public class OrderServiceImpl implements OrderService { private final UserReposit..

    [Spring Core] Container, Bean Scope

    [Spring Core] Container, Bean Scope

    Spring 컨테이너(Container)와 빈(Bean) Spring Container 스프링 컨테이너 란? 스프링은 스프링 컨테이너를 통해 객체를 관리하고, 컨테이너는 개발자가 정의한 Bean 설정 정보에 따라서 Bean 생성, 관리, 제거 등의 역할을 담당한다. 스프링 컨테이너는 의존성 주입을 통해 애플리케이션의 컴포넌트를 관리한다. 서로 다른 bean을 연결해 애플리케이션의 bean을 연결하는 역할을 한다. 개발자는 모듈 간의 의존 및 결합으로 인해 발생하는 문제로부터 자유로울 수 있고, 메서드를 호출하기 위한 매개 변수를 준비해서 전달하지 않는다. 스프링 컨테이너를 사용하는 이유? 객체를 생성하기 위해 new 생성자를 써야 했다. 이에 따라 애플리케이션에서 의존성이 높은 객체가 무수히 많고 서로 ..

    [Spring Core] Spring Framework 모듈 구성

    [Spring Core] Spring Framework 모듈 구성

    아키텍처(Architecture)란? 아키텍처는 건축 분야에서 유래된 용어로써 요구 사항을 만족하는 건축물을 짓는데 있어 청사진 같은 역할을 한다. 소프트웨어에서 아키텍처란, 소프트웨어를 개발할 때 수많은 모듈들을 어떻게 분할하고 배치하며, 어떤 기능을 구현할 것인지 참고하는 설계도와 같은 역할을 한다. 시스템 아키텍처 하드웨어와 소프트웨어를 모두 포함하는 어떤 시스템의 전체적인 구성을 큰그림으로 표현한 것이다. 해당 시스템 구성 요소들 간의 상호작용이 어떻게 이루어지는지 등 시스템이 정상적으로 동작하기 위한 동작 원리 등이 시스템 아키텍처 안에 표현하는 것이다. 시스템 아키텍처 사례 채팅 서버 시스템 아키텍처의 예 채팅 서버를 구축하기 위한 전통적인 시스템 아키텍처이다. 사용자가 많아진다면 위 그림의 ..

    [Spring Core] Spring Framework의 특징

    [Spring Core] Spring Framework의 특징

    Spring Framework란? Java/Kotlin 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 동적인 웹 사이트 개발을 위한 여러 가지 서비스를 제공한다. 프레임워크는 개발자들이 필요에 따라 자신의 코드에 사용하거나 추가할 수 있도록 미리 작성된 대규모 코드 모음이다. 프레임워크를 통해 개발자는 개발 중에 부담을 덜 수 있다. 스프링이라는 이름의 유래는 Java EE의 스펙을 구현한 EJB가 기술의 복잡도가 증가해서 성능이 느렸던 것을 탈피하여, EJB 시절을 "겨울"에 빗대어 겨울 후의 "봄"으로 새로운 시작한다는 것을 의미하는 스프링이 되었다. Library와 Framework의 차이? Library 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 집합이다. 미리 작성된..