건승하고있어요/Spring framework (16) 썸네일형 리스트형 [Spring] 스프링2일차 - 외부 Pointcut 참조하기 외부 Pointcut 참조하기 XML설정으로 포인트컷을 관리하는 경우 -> 스프링 설정 파일에 포인트컷을 여러 개 등록, 애스펙트를 설정할 때 pointcut-ref 속성으로 특정 포인트컷을 참조할 수 있었음 -> 포인트컷 재사용 가능 하지만 어노테이션 설정으로 변경하고부터는 어드바이스 클래스마다 포인트컷 설정이 포함됨따라서 비슷하거나 같은 포인트컷이 반복선언되는 문제 발생 (ex) public void allpointcut(){}에 대한 @Pointcut설정이러한 문제를 해결하고자 포인트컷을 외부에 독립된 클래스로 설정 @Service@Aspectpublic class PointcutCommon(){ @Pointcut("execution(* com.springbook.biz..*Impl.*(..))").. [Spring] 스프링2일차 - 어노테이션 기반 AOP 설정 어노테이션 기반 AOP 사용을 위한 스프링 설정 1. 스프링 설정 파일에 엘리먼트 선언 엘리먼트만 선언하면 스프링 컨테이너는 aop 관련 어노테이션들을 인식하고 용도에 맞게 처리해준다. -AOP관련 어노테이션들은 어드바이스 클래스에 설정-어드바이스 클래스에 선언된 어노테이션들을 스프링 컨테이너가 설정하게 하기 위해서는 객체가 반드시 생성되어 있어야 함-따라서 을 등록하거나 @Service어노테이션을 사용하여 컴포넌트가 검색될 수 있도록 해야함 Annotation 설정 @Servicepublic class Advice{} XML 설정 2. 포인트컷 설정 -어노테이션 설정으로 포인트 컷을 선언할 경우 => @Pointcut 사용-하나의 어드바이스 클래스 안에 여러개의 포인트 컷을 선언할 수 있음 -> 포인트.. [Spring] 스프링2일차 - 어드바이스 동작 시점 어드바이스각 조인포인트에 삽입되어 동작할 횡단 관심에 해당하는 공통기능동작시점은 각 AOP기술마다 다름 동작시점 설명 Before 비지니스 메소드 실행 전 동작 After -After Returning: 비지니스 메소드가 성공적으로 리턴되면 동작 -After Throwing: 비지니스 메소드 실행 중 예외가 발생하면 동작 -After : 비지니스 메소드가 실행된 후 무조건 실행 Around Around는 메소드 호출 자체를 가로채 비지니스 메소드 실행 전후에 처리할 로직을 삽입할 수 있음 Before 어드바이스포인트컷으로 지정된 메소드 호출 시, 메소드가 실행되기 전에 처리될 내용들을 기술하기 위해 사용 After Returning 어드바이스포인트컷으로 지정된 메소드가 정상적으로 실행되고 나서 메소드 수.. [Spring] 스프링2일차 - 포인트컷 표현식 포인트컷 표현식 execution(* com.ciel.animo. .*Impl.get*(..)) 1. 리턴타입 지정 execution(* com.ciel.animo. .*Impl.get*(..))리턴타입 지정에서 가장 기본적인 방법은 '*' 캐릭터를 사용하는 것이다. 표현식 설명 * 모든 리턴타입 허용 void 리턴타입이 void인 메소드 선택 !void 리턴타입이 void가 아닌 메소드 선택 2. 패키지 지정 execution(* com.ciel.animo. .*Impl.get*(..))패키지 경로를 지정할 때는 '*', '..' 캐릭터를 이용한다. 표현식 설명 com.ciel.animo 정확하게 com.ciel.animo 패키지만 선택 com.ciel.animo.. com.ciel.animo 패키지로.. [Spring] 스프링2일차 - AOP용어 AOP 용어정리 조인포인트(Joinpoint) 클라이언트가 호출하는 모든 비즈니스 메소드. 조인포인트 중에서 포인트컷이 선택됨(ServiceImpl클래스의 모든 메소드들을 조인포인트라고 생각하면 됨) 포인트컷(Pointcut) 필터링된 조인포인트. 수많은 비즈니스 메소드 중에서 우리가 원하는 특정 메소드에서만 횡단관심에 해당하는 공통기능을 수행시키기 위한 것 어드바이스(Advice) 횡단관심에 해당하는 공통기능의 코드. 독립된 클래스의 메소드로 작성. 위빙(Weaving) 포인트컷으로 지정한 핵심 관심 메소드가 호출될 때 어드바이스에 해당하는 횡단관심 메소드가 삽입되는 과정. 위빙을 통해서 비지니스 메소드를 수정하지 않고도 횡단관심에 해당하는 기능을 추가하거나 변경할 수 있음. 애스팩트(Aspect) 혹.. [Spring] 스프링2일차 - 스프링AOP 스프링 AOP 비지니스 컴포넌트 개발에서 가장 중요한 원칙 두 가지★낮은 결합도 & 높은 응집도★ -의존성주입(Dependency Injection) => 낮은 결합도를 가능하게 해줌-AOP(Aspect Oriented Programming) => 높은 응집도를 위한 기능 비즈니스 메소드에 부가적인 코드들이 반복해서 등장 => 코드 분석과 유지보수를 어렵게 만듦AOP는 이러한 부가적인 공통코드들을 효율적으로 관리하는데 주목 관심분리(Separation of Concerns) 횡단관심(Crosscutting Concerns) 메소드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리같은 코드 핵심관심(Core Concerns) 사용자의 요청에 따라 실제로 수행되는 비지니스 로직 이 두 관심을 완벽하게 분리.. [Spring] 스프링1일차 - 의존성 주입 어노테이션 의존성 주입 어노테이션 어노테이션 설명 @Autowired 주로 변수 위에 설정하여 해당 타입의 객체를 찾아서 자동으로 할당한다. @Qualifier 특정 객체의 이름을 이용하여 의존성 주입할 때 사용한다. @Inject @Autowired와 동일한 기능을 제공한다. @Resource @Autowired와 @Qualifier의 기능을 결합한 어노테이션이다. @Autowired-생성자나 메소드, 멤버변수 위에 모두 사용가능-어디에 사용하든 결과는 같지만 대부분은 멤버변수 위에 선언하여 사용@Autowiredprivate Speaker speaker; -스프링 컨테이너는 멤버변수 위에 붙은 @Autowired를 확인하는 순간 해당 변수의 타입을 체크, 그 타입의 객체가 메모리에 존재하는지 확인한 후 객체를 .. [Spring] 스프링1일차 - 어노테이션 기반 설정 어노테이션 기반 설정 1. Context 네임스페이스 추가스프링 설정 파일의 루트 엘리먼트인 에 Context 관련 네임스페이스와 스키마 문서의 위치를 등록->자바EE로 해 놓고 있으면 콘솔창 위쪽으로 namespace라는 탭이 있다. 그거 누르면 체크체크 할 수 있다. 이렇게 한다. ...ㅋㅋㅋㅋㅋㅋㅋ 2.컴포넌트 스캔(component-scan) 설정스프링 설정파일에 애플리케이션에서 사용할 객체들을 등록하지 않고 자동으로 생성하려면 이라는 엘리먼트를 정의해야한다. 이 설정을 추가하면 스프링 컨테이너는 클래스 패스에 있는 클래스들을 스캔하여 @Component가 설정된 클래스들을 자동으로 객체생성한다. 설정을 제외한 나머지 설정은 삭제하거나 주석으로 처리한다.중요한 것은 엘리먼트의 base-packag.. 이전 1 2 다음