AOP : 핵심클래스의 특정 메서드를 실행하기 전,후에 공통으로 사용되는 기능(Advice)이 어느위치(PointCut)에서 실행이 될것인지가 중요하다.
🎈MyModel.java 생성(핵심클래스)
- Target클래스
- 핵심기능을 처리해주는 메서드를 가진 클래스(핵심클래스=Target)
🎁SecurityClass.java 생성
- 핵심기능을 가진 메서드 실행전에 보여줄 메서드 선언
🎁MyAspectBean.java 생성
- 2개의 자주 사용, 반복, 공통기능을 가진 메서드를 선언된 클래스(=Aspect 클래스)
MyModel => HelloController에서 불러올 수 있도록(has a 관계)
- beforeProcess()=>class1.security();//회원로그인을 해주는 기능
- processMsg()//회원수정
- afterProcess() //회원수정이후에 그 수정내용을 출력시켜주는 메서드
🎈HelloActionController.java
- 핵심클래스->중요한 역할 메서드(핵심메서드) => handleRequest
- HelloActionController 소스코드 변경 => /hello.do
- DI를 이용해서 의존객체주입할 객체 지정(공통관심사항)
🎈hello-servlet.xml
- sp.aop2 패키지 생성해서 작성
- 1.
<bean>태그를 이용해서 등록 ->- 2.
<aop:config>=>- 3.@Aspect,@Before,@After 이용
🎈pom.xml
- AOP 어노테이션을 사용하기 위해서 pom.xml에 추가해준다.
🎈UserVO
🎈UserService
- 인터페이스로 생성
🎈UserServiceImpl
- UserService 인터페이스 상속받아서 생성
🎈app.xml
<aop:aspectj-autoproxy />: @Aspect,@Before,@After에 대한 프록시객체 자동설정해준다.
🎈BeforeAdvice
- 인터페이스 상속받을 필요X
- Before 역할(전처리) => 공통관심클래스 => Pointcut(핵심메서드 지정)+Advice(핵심메서드 전, 후, 전후)
- @Aspect : 공통관심 클래스 어노테이션(Advice 역할)
- @Service : 컨트롤과 DAO 중간에서 연결해주는 역할을 한다.(특정조건에 빈즈를 등록한다.)<->@Component(무조건 빈즈 등록)
🎈LogAdvice
🎈UserServiceClient
- main()로 생성한다.
🎈실행결과 확인