[Spring]
1. XML: 공통 개발
2. Annotation: 개인 개발
3. XML+Annotation
4. Java(Spring 5)
스프링: 반복 제거 => 소스 간결
프로그램
=공통모듈: AOP
=핵심모듈
공통=>싱글턴
생성,소멸담당 => 객체 생명주기 관리
생성 constructorDI => setterDI => init-method => 프로그래머가 활용=> destroy-method => 소멸
#메모리 할당(객체 등록)
<bean> =>app.xml
@Component: 일반 클래스, @Repository: DB(DAO 등), @Service, @Controller: Model, @RestController
#Inject(값 주입)
@Required, @Autowired, @PostConstruct, @PreDestroy, @Resource
==================================================================
1. DI, Container 개념
1)setterDI : setXxx() => DB연결, 네트워크...
<bean id="aaa" class=""
p:username=""
p:url=""
p:dirverClassManager=""
/>
2)생성자 DI: 생성자의 매개변수 주입
<bean id="bbb" class=""
c:=""
c:=""
c:=""
/>
3)Autowired
동작: XML을 읽어서 등록된 클래스의 메모리를 할당
2. AOP vs OOP
어느 메소드에 추가? PointCut
언제 호출(메소드 위치)? JoinPoint
=> Before: 메소드 시작 전
After: 무조건 호출(finally)
Around: 코딩 위 아래
After-Throwing: catch수행(에러 처리)
After-Returning: 정상수행(리턴값 받아 처리)
PointCut+JoinPoint=Advice
Advice가 여러개 =>Aspect(공통모듈; 공통으로 사용되는 메소드의 집합)
=>트랜잭션, 로그파일, 보안처리
3. DAO vs Service 차이점
@Component: 일반클래스
@Repository: DAO
@Controller: Model
@Service: Manager, DAO+DAO
@RestController: 파일 전송없이 일반 문자열 전송
주입
@Autowired: 스프링에서 저장된 클래스 중 맞는 주소 찾아서 자동 주입
@Resource
@Quallifier
@Inject