Spring-1(어노테이션관련)

Yoon·2023년 7월 25일
0

Spring

목록 보기
2/9

객체(bean) 설정
-xml 방식 *

-자바 어노테이션 방식 * (이 방법을 많이 쓰지만 안쓸경우 xml방식을 알아야 함)

*(이거 코딩 흐름은 그냥 알아야됨)
-@Configuration
ㄴ> @Bean에 객체를 담는 방식 (스프링에서 관리해줌 싱글톤 보장)
AnnotationConfig 담은 클래스 호출해서 사용하면 됨

* @Autowired (킹갓자동최고봉) *
타입을 이용해서 자동으로 Bean타입 객체 주입
1. 필드위
2. 생성자 위
3. 매개변수 위

  • @Qualifier
    동일한 Bean타입의 객체가 여러개일 경우 함께 사용(그러나 동일한 타입을 여러개 설계하면 안되기 때문에 쓸 일이 거의 없다)

-@Component 방식 (이후에 배우면 정리)

  • DAO : @Repository (db연결)
    * 컨트롤러 : @Controller (동작)
    ㄴ> url매핑(url, method), 파라미터를 받는 방법, 서비스 호출(실행), 데이터 저장, 응답(포워딩, 리다이렉트)

@RequestMapping : method 지정 가능(get,post방식지정가능)
사실 이것보다
@GetMapping(url)
@PostMapping(url)

  • 서비스 : @Service

-ComponentScan : 해당 패키지 하위에 있는 클래스들에 어노테이션이 있는 경우 빈생성 및 등록
*"이름" : 클래스명 첫자를 소문자로

*** 관점 지향 프로그래밍 : AOP(Aspect Oriented Programming)
AOP는 메서드 안의 주기능과 보조 기능을 분리한 후 선택적으로 메서드에 적용해서 사용한다는 개념
ㄴ> 일단 개념적으로만 이해하고 이후에 api 개발하고 그러면 다시 같이 공부하기

proxy 패턴 (대신 실행해줌)

*** invocation (public Object invoke) 구조

@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
	
	System.out.println("[메서드 호출 전 : LogginAdvice");
	System.out.println (invocation. getMethod() + "메서드 호출 전");

	Object object = invocation.proceed();
	
	System.out.println("[메서드 호출 후 : LoggingAdvice");
	System.out.println(invocation. getMethod () + "메서드 호출 후");
	return object;
	
}

@Aspect 어노테이션 방식

  • 타겟 메서드로 Aspect 실행 시점을 지정할 수 있음

(( * 즉, AOP 주요 개념 *
Aspect : 위에서 설명한 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화함.
Target : Aspect를 적용하는 곳 (클래스, 메서드 .. )
Advice : 실질적으로 어떤 일을 해야할 지에 대한 것, 실질적인 부가기능을 담은 구현체
JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용가능
PointCut : JointPoint의 상세한 스펙을 정의한 것. 'A란 메서드의 진입 시점에 호출할 것'과 같이 더욱 구체적으로 Advice가 실행될 지점을 정할 수 있음

* Spring AOP 특징 *
프록시 패턴 기반의 AOP 구현체, 프록시 객체를 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위해서임
스프링 빈에만 AOP를 적용 가능
모든 AOP 기능을 제공하는 것이 아닌 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(중복코드, 프록시 클래스 작성의 번거로움, 객체들 간 관계 복잡도 증가 ...)에 대한 해결책을 지원하는 것이 목적 ))

0개의 댓글