Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- JSP
- Menu
- 오버로딩
- 전화걸기
- HTML
- 예외처리
- oracle
- 메서드
- struts2
- AWT
- OGNL
- mybatis
- Eclips
- 안드로이드
- 클래스
- 어노테이션
- 배열
- 기본
- Android
- 메소드
- Spring
- 이클립스
- Graphic
- 국제화
- 에러페이지
- Java
- layout
- JavaScript
- 생성자
- paint
Archives
- Today
- Total
note
Spring AOP XML스키마 기반의 POJO 클래스를 이용한 AOP 구현 본문
실행화면(Main.java)
WriteArticleService.write(..)시작
WriteArticleServiceImpl.write() 메서드 실행
ArticleDao.insert(..)시작
MySQLArticleDao.insert() 실행
ArticleDao.insert(..)종료
ArticleDao.insert(..)실행시간 : 0ms
WriteArticleService.write(..)종료
WriteArticleService.write(..)실행시간 : 0ms
Article -> ArticleDao -> MySQLArticleDao에 implements ->
applicationContext.xml
공통 관심 사항
<aop:aorund> 메서드 호출 이전, 이후, 예외 발생등 모든 시점에 적용가능한 Advice
<aop:aorund> 메서드 호출 이전, 이후, 예외 발생등 모든 시점에 적용가능한 Advice
Main
package madvirus.spring.chap05.aop.pojo;
import madvirus.spring.chap05.board.Article;
import madvirus.spring.chap05.board.service.WriteArticleService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
String[] configLocations = new String[] { "applicationContext.xml" };
ApplicationContext context = new ClassPathXmlApplicationContext(
configLocations);
WriteArticleService articleService= (WriteArticleService) context.getBean("writeArticleService");
articleService.write(new Article());
}
}
ProfilingAdvice
package madvirus.spring.chap05.aop.pojo;
import org.aspectj.lang.ProceedingJoinPoint;
public class ProfilingAdvice {
public Object trace(ProceedingJoinPoint joinPoint) throws Throwable{
String signatureString = joinPoint.getSignature().toShortString();
System.out.println(signatureString +"시작");
long start = System.currentTimeMillis();
try{
Object result =joinPoint.proceed();
return result;
}finally{
long finish = System.currentTimeMillis();
System.out.println(signatureString +"종료");
System.out.println(signatureString +"실행시간 : "+(finish - start)+"ms");
}
}
}
Article
package madvirus.spring.chap05.board;
import madvirus.spring.chap05.board.dao.ArticleDao;
public class Article {
private int id;
private ArticleDao articleDao;
public Article() {
}
public Article(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void increaseReadCount() {
articleDao.updateReadCount(id, 1);
}
public void setArticleDao(ArticleDao articleDao) {
this.articleDao = articleDao;
}
}
ArticleDao
package madvirus.spring.chap05.board.dao;
import madvirus.spring.chap05.board.Article;
public interface ArticleDao {
void insert(Article article);
void updateReadCount(int id, int i);
}
MySQLArticleDao
package madvirus.spring.chap05.board.dao;
import madvirus.spring.chap05.board.Article;
public class MySQLArticleDao implements ArticleDao {
@Override
public void insert(Article article) {
System.out.println("MySQLArticleDao.insert() 실행");
}
@Override
public void updateReadCount(int articleId, int inc) {
System.out.println("MySQLArticleDao.updateReadCount() 실행");
}
}
WriteArticleService
package madvirus.spring.chap05.board.service;
import madvirus.spring.chap05.board.Article;
public interface WriteArticleService {
void write(Article article);
}
WriteArticleServiceImpl
package madvirus.spring.chap05.board.service;
import madvirus.spring.chap05.board.Article;
import madvirus.spring.chap05.board.dao.ArticleDao;
public class WriteArticleServiceImpl implements WriteArticleService {
private ArticleDao articleDao;
public WriteArticleServiceImpl() {
}
public WriteArticleServiceImpl(ArticleDao articleDao) {
this.articleDao = articleDao;
}
@Override
public void write(Article article) {
System.out.println("WriteArticleServiceImpl.write() 메서드 실행");
articleDao.insert(article);
}
}
Member
package madvirus.spring.chap05.member;
public class Member {
}
MemberService
package madvirus.spring.chap05.member.service;
import madvirus.spring.chap05.member.Member;
public interface MemberService {
void regist(Member member);
boolean update(String memberId, UpdateInfo info);
}
MemberServiceImpl
package madvirus.spring.chap05.member.service;
import madvirus.spring.chap05.member.Member;
public class MemberServiceImpl implements MemberService {
@Override
public void regist(Member member) {
System.out.println("MemberServiceImpl.regist() 메서드 실행");
}
@Override
public boolean update(String memberId, UpdateInfo info) {
System.out.println("MemberServiceImpl.update() 메서드 실행");
return true;
}
}
UpdateInfo
package madvirus.spring.chap05.member.service;
public class UpdateInfo {
}
'JSP > Spring' 카테고리의 다른 글
Spring RequsetMapping의 부가적인 기능 컨트롤러 메서드의 HTTP 전송방식 한정 (2) | 2012.03.02 |
---|---|
Spring Web (1) | 2012.03.02 |
Spring AOP (1) | 2012.03.02 |
Spring @Component 어노테이션을 이용한 자동 스캔 (0) | 2012.03.02 |
Spring @PostConstruct / @PreDestroy 어노테이션과 라이프 사이클 (0) | 2012.03.02 |