SpringFramework의 구조
1. POJO (plain old java object)
- 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바 객체
- 테스트하기 용이하며, 객체지향 설계를 자유롭게 적용할 수 있다.
2. PSA (portable service abstraction)
- 환경과 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계 원칙
- 트랜잭션 추상화 (ex, 데이터베이스에 관계없이 동일하게 적용할 수 있는 트랜잭션 처리방식)
3. loC/DI (dependency Injection)
- DI는 유연하게 확장 가능한 객체를 만들어 두고 객체 간의 의존관계는 외부에서 다이나믹하게 설정
4. AOP (aspect oriented programming)
- 관심사의 분리를 통해서 소프트웨어의 모듈성을 향상
- 공통 모듈을 여러 코드에 쉽게 적용가능
IoC ( Inversion of Control, 제어의 역행)
- 객체지향 언어에서 Object간의 연결 관계를 런타임에 결정
- 객체 간의 관계가 느슨하게 연결됨
- loC의 구현 방법 중 하나가 DI
IoC 유형
1. Dependenct Lookup
- 컨테이너가lookup context를 통해서 필요한 Resource나 Object를 얻는 방식
2. DI
- Object에 lookup 코드를 사용하지 않고 컨테이너가 직접 의존 구조를 Object에 설정할 수 있도록 지정해 주는 방식
Spring DI Container
- Spring DI Container 가 관리하는 객체를 빈이라 하고 이 빈들의 생명주기를 관리하는 의미로 빈팩토리라고 한다.
- bean Factory에 여러 가지 컨테이너 기능을 추가하여 ApplicationContext (interface)
IoC 개념
- 객체 제어 방식 ( 객체 생성을 Container에게 위임하여 처리)
- 장점 : 객체 간의 결합도를 떨어뜨릴 수 있음
빈의 생성 범위
1. 싱글톤 : default 값, 하나의 인스턴스 빈만 생성
2. prototype : 컨테이너에 빈을 요청할 때마다 새로운 인스턴스 생성
3. request
4. session
빈설정 방법
1. XML 문서
<bean id = "memberDao" class="com.test.hello.dao.MemberDaoImpl"/>
2. Annotation
@Component
public class MemberServiceImpl implements MemberService{
@Autowired
private MemberDao memberDao;
...
}
어노테이션으로 빈을 설정 할 경우 반드시 component-scan을 설정해야 한다.
Annotaion
1. Repository
2. Service
3. Controller
4. Component : 일반적인 경우
'[BACK-END] > [SPRING]' 카테고리의 다른 글
REST API와 Spring 실습 (0) | 2023.04.26 |
---|---|
Spring MVC (0) | 2022.12.16 |
Spring bean (0) | 2022.12.14 |
Spring 백엔드 기초 중 기초 [회원관리]-(2) (0) | 2022.12.07 |
Spring 백엔드 기초 중 기초 [회원관리]-(1) (0) | 2022.12.07 |