JAVA 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
Plain Old Java Object (POJO)
오래된 방식의 간단한 자바 객체 -getter, setter, 멤버변수
1. Portable Service Abstraction (PSA)
서비스 추상화
2. Inversion of Control (IOC) / Dl
-제어의 역전
-객체의 생성, 생명주기의 관리까지 모든객체를 프레임워크가 관리한다.
2-1. Dl
-각 클래스간의 의존관계를 빈 설정 <- 개발자설정 (xml, annotation)
설정정보를 바탕으로 컨테이너가 자동으로 연결
3. Aspect Oriented Programing (AOP)
관점지향 프로그래밍
-모듈성을 높일 목적으로 서로다른 관심사를 분리하는 프로그래밍 패러다임
Spring Contatiner - IOC (Inversion of Control)
Bean을 담는 그릇.
빈 팩토리, 어플리케이션 컨텍스트에서 객체가 생성, 소멸, 주입된다.
BeanFactory
빈팩토리 인터페이스는 IOC컨테이너 기능을 정의하고 있는 인터페이스이며,
빈의 생성 및 의존성 주입, 생명주기 관리 등의 기능을 제공한다.
빈: IOC컨테이너에 의해 생성되어 관리되는 객체
ApplicationContext
빈팩토리 인터페이스를 상속받는 어플리케이션 컨텍스트는
빈팩토리가 제공하는 기능 외 AOP, 메세지처리, 이벤트처리 등 기능제공 = 핵심
ApplicationContext 생성예제
ApplicationContext context = new ClassPathXmlApplicationContext("config/bean.xml");
MyBean bean = context.getBean("myBean");
(인스턴스를 싱클톤(계속하여 생존) 으로 할 것인지,
매번 새로 생성할 것인지에 대한 사항)
(EX. 인스턴스를 생성할 때와 인스턴스를 소멸할 때 이벤트 처리)
(EX. 트랜잭션 관리나 로깅관리)
(EX. 트랜잭션 관리나 로깅관리)
ASPECT(관점)의 주 목적은 '횡단 관심사'의 모듈화에 있다.
'횡단 관심사'란? 한 어플리케이션의 여러부분에 영향을 주는 기능이다.
일례로,
'보안'은 하나의 어플리케이션 내에서 여러객체 메소드의 보안규칙에 영향을 미치는 '횡단 관심사'이다.
DI (Dependency Injection)
각 클래스 간 의존관계를 빈 설정 <-개발자가 설정(xml, annotation)
설정정보를 바탕으로 컨테이너가 자동으로 연결한다.
Setter Injection
의존성을 입력받는 setter메서드를 만들고 이를 통해 의존성을 주입한다.
Constructor Injection
필요한 의존성을 포함하는 클래스의 생성자를 만들고, 이를 통해 의존성을 주입한다.
Method Injection
의존성을 입력받는 일반메서드를 만들고, 이를 통해 의존성을 주입한다.