- pom.xml
<!-- aop aspectj 문법 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
- root-context.xml
<!-- aop 자동 프록시 설정 -->
<aop:aspectj-autoproxy/>
<!-- AOP xml방식으로 환경설정 -->
<aop:config/>
- 사용 예)
package com.hungry.spring.member.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.hungry.spring.member.dao.MemberDAO;
import com.hungry.spring.member.vo.MemberVO;
@Service("memberService")
public class MemberServiceImpl implements MemberService {
@Autowired
private MemberDAO memberDao;
@Override
public MemberVO id_check(String id) {
return this.memberDao.id_check(id);
}
@Override
public void insertMember(MemberVO m) {
this.memberDao.insertMember(m);
}
@Override
public MemberVO login_check(String m_id) {
return this.memberDao.login_check(m_id);
}
@Override
public List<MemberVO> findId(MemberVO m) {
return this.memberDao.findId(m);
}
//AOP를 통한 트랜잭션 적용 - 반드시 조회가 완료된 회원만 비밀번호변경이 이루어 져야함.
@Transactional
@Override
public MemberVO findPw(MemberVO m) {
this.memberDao.updatePw(m);//임시비밀번호 변경
return this.memberDao.findPw(m);//내용 가져오기
}
}
Service Impl에서 사용하며 Dao로 넘겨주기전에 @Transactional 로 선언해준다.
DAO로 넘겨주는 updatePw()와 findPw() 둘중 하나라도 에러가 생기면 실행되지 않는다.