[정리]
스프링 : IoC와 AOP를 지원하는 경량의 프레임워크
경량 : POJO 위주이다
프레임워크 : 구조, 틀, 규격 : 개발자들의 역량을 상향평준화 유지보수 용이
IoC 제어의 역행(역전)
new(==객체 생성 및 관리)를 원래 개발자
>> 컨테이너가 한다
DS, HM, VR, Command, 객체들, @Component, @Controller, @Repository, @service,...
+ 의존 주입(DI) : 생성자 주입, setter 주입, @Autowired 어노테이션
★ 결합도를 낮출 수 있음 ★
[ AOP ]
Aspect Oriented Programming
관점 지향 프로그래밍
"관점" ( == 기능)
별찍기, 배열 저장
-> 절차 지향 프로그래밍 : 대표적으로 C언어가 있다.
JAVA == OOP(객체 지향 프로그래밍, Object Oriented Programming)
class Person
class Student
class Animal
객체지향 프로그래밍을 할때는 반드시 주어가 필요하다.
절차 지향 == 함수 static function test()
↕
객체 지향 == 메서드 의 차이점이다.
System.out.println()
new Scanner() sc.nextInt()
student.hello()
memberDAO.selectOne()
핵심 기능
핵심 관심(관점)
비즈니스 메서드
CRUD
서비스
종단 처리된 기능
-> 현재까지 배운 Insert / delete 등의 기능에 대한 내용
공통 기능
공통 로직
공통 관심(관점)
횡단 관심
횡단 처리된 기능
-> 인가, 허가, 확인
인증(본인인증), 유효성 검사
로그(로깅)
보안
트랜잭션 처리
IoC ---> 결합도 낮춤
AOP ---> 응집도 높임
=> 스프링은 유지보수 용이하다!
AOP 적용은 쉽다. 설정대로 하라고 하는대로 하면된다.
공통 기능 공통 로직 분석 -> Advice -> 횡단 관리를 의미한다.
Pointcut -> 포인트 컷 핵심관심, CRUD, 비즈니스메서드
Aspect (Advisor, 어드바이저) -> 애스팩트
어드바이스 + 포인트컷
어드바이스(공통로직)과 포인트컷(핵심관심)의 결합
-> 설정 그 자체를 의미하는 경우가 많다
Joinpoint -> 조인 포인트
포인트컷 후보(포인트컷이 될수있는 대상)
모든 CRUD를 의미함
Weaving -> 위빙
핵심관심에 공통로직을 끼워넣는 과정
스프링에서는 실행시 위빙처리가 수행됨
런타임 위빙 방식
객체지향프로그래밍(OOP)의 한계
Advice를 교체할때
코드가 많이 변경되므로
개발시간, 컴파일 비용이 많이 필요해진다.>> 스프링 컨테이너
-> 객체생성 및 관리 할 수 있잖아?
Advice의 메서드(공통 로직)를 제시간에 호출해줘 == 관점지향프로그랭(AOP)
<bean class="biz.common.LogAdvice" id="la"/>
<aop:config>
<어떤 핵심관심에 대해>
<언제 어떤 공통로직을 호출해야한는지>
</aop:config>
<aop:config>
<aop:pointcut expression="execution(* cohttp://m.nsd.app.biz..*Impl.*(..))" id="aPointcut"/>
<aop:pointcut expression="execution(* cohttp://m.nsd.app.biz..*Impl.select*(..))" id="bPointcut"/>
<aop:aspect ref="la">
<aop:before method="printlog" pointcut-ref="aPointcut"/>
</aop:aspect>
</aop:config>
'국비 내용 정리 > Spring' 카테고리의 다른 글
국비 68일 내용정리 (템플릿 패턴) (0) | 2024.10.19 |
---|---|
국비 67일 내용정리 (AOP @어노테이션) (0) | 2024.10.16 |
국비 65일 내용정리 (Spring 비동기) (0) | 2024.10.14 |
국비 63일차 내용정리 (Spring MAV) (0) | 2024.10.10 |
국비 62일차 내용정리 (Spring ViewResolver) (1) | 2024.10.08 |