프레임 워크(framework) : 어떤 대상을 구성하는 뼈대
=> SW : 기능을 미리 클래스나 인터페이스 형태로 만들어서 제공하는 형태
=> 모든 팀원이 동일한 구조에서 결과물을 생성 할 수 있음 => 개발 시간이 단축됨
* Spring 2.5 : 애노테이션을 지원 (@Controller 등)
Spring 3.0 : Java 클래스를 설정 파일로 지원
Spring 4.0 : REST 방식 지원
스프링 특징
1. EJB(enterprise java beans)보다 가볍고 학습하기 쉬운 경량 프레임워크
2. POJO(Plain Old Java Object) 기반의 구성 = 자바 형태로 만들어져 있음
3. 제어의 역행(IoC, Inversion Of Control) 기술을 사용 => 애플리케이션의 약한 결합을 제어
: 메서드/객체의 호출 작업을 개발자가 결정하는 것이 아닌 외부에서 결정(주로 프레임워크에서 결정)
4. 의존성 주입(DI, Dependency Injection)기능 지원
: 제어의 역행이 발생할 때, 스프링 내부에 있는 객체(Bean)을 관리하는 기법
* 의존성 : 객체가 혼자서 처리할 수 없음. 다른 객체를 통해 도움을 받아야지만 처리가 가능함
=> 의존관계에 있는 객체를 직접 생성, 제어가 아니라 제어의 역행을 통해서 필요한 객체를 외부에거 결정해서 연결
1. 생성자를 사용한 주입 / 2. set()을 사용한 주입
5. 관점지향 프로그래밍 지원(AOP, Aspect-Oriented Programing)지원 => 자원관리 가능
: 개발자가 비즈니스로직에만 집중해서 개발하도록 하는 방법
: '횡단 관심사'를 분리하여 제작하여 개발하는 방법
6. 편리한 MVC 패턴 구조
7. 영속성 관련 다양한 서비스 제공
* AOP : 개발자가 비즈니스로직에만 집중해서 개발하도록 하는 방법
: '횡단 관심사'를 분리하여 제작하여 개발하는 방법
- aspect : 구현하고자 하는 보조기능(보안, 로그, 트렌젝션)
- advice : aspect의 실제 구현 클래스(메서드 호출 기준으로 여러 곳 호출 가능)
- joinpoint : advice를 적용하는 지검
- pointcut : advice가 적용되는 대상 지점(패키지명/클래스명/메서드명)
- target : advice가 적용되는 클래스
- weaving : advice를 주기적으로 적용하는 것
* AOP기능 구현
1. target클래스를 지정한다.
2. advice 클래스를 지정한다.
3. 설정파일에서 pointcut 을 지정
4. 설정파일에서 advice + pointcut 결합
5. 스프링 ProxyFactoryBean 클래스를 사용해서 target에 advice를 적용
6. getBean()사용해서 적용
* 주기능 : 계산
* 보조기능 : 로그출력
* 스프링 주요 기능
1. Spring Core : 다른 기능과 설정 기능을 분리하기 위한 IoC기능(제어의 역행)을 제공
2. Spring Context : 스프링의 기본기능, 애플리케이션의 각 기능을 빈에 접근하는 방법
3. Spring DAO : JDBC기능을 편리하게 사용 가능
4. Spring ORM : 하이버네이트/마이바티스와 같은 영속성 프레임 워크를 제공(DB관련 프레임 워크가 따로 존재함)
5. Spring AOP : 관점 지향 기능 제공
6. Spring WEB : 웹 애플리케이션 개발에 필요한 기능 제공
7. Spring WebWVC : MVC구현 기능 제공
* 강한 결합 : 직접적인 연관관계가 있어서 코드 변경이 어려움
* 약한 결합 : 직접적인연관관계가 없어서 코드 변경이 쉬움
'STUDY > SPRING' 카테고리의 다른 글
SPRING - bean grape가 안뜰 때 (0) | 2022.06.14 |
---|---|
Spring - mysql 연결 테스트 (0) | 2022.06.14 |
Spring Legacy와 boot 차이점 (0) | 2022.06.13 |
spring - Controller테스트 (0) | 2022.06.13 |
spring -(view, Service, Controller) 이론 (0) | 2022.06.13 |