Spring(6)
-
[ Spring ] AOP ( Aspect Oriented Programming ) - excepObj를 통하여 반환된 예외 확인하기
AfterThrowingAdvice Target 메서드가 수행도중 예외가 발생했을 때 되면 실행되는 Advice를 의미한다. 1. Exception excepObj를 추가한다. package com.test.app.common; import org.aspectj.lang.JoinPoint; public class AfterThrowingAdvice { // ▼ public void ataLog(JoinPoint jp, Exception excepObj) { // 반환받을 예외 객체 String methodName = jp.getSignature().getName(); System.out.println("호출된 핵심관심: " + methodName); } } 2. XML 파일을 아래와 같이 수정해준다. 3..
2022.04.07 -
[ Spring ] AOP ( Aspect Oriented Programming ) - 핵심 관심 호출하기 ( 사용된 인자와 메서드명, 반환 값 확인 하기 )
Advice ( 횡단 관심, 공통 로직 )를 효율적으로 사용하려면, 핵심 관심( 비즈니스 메서드, CRUD )을 알아야 한다. 이때, JoinPoint 가 제공되고, 핵심 관심을 넣어주는 것은 컨테이너의 역할이다. 어제 사용한 LogAdvice를 다음과 같이 수정한다. 1. Join Point를 인자로 지정해주어 자동으로 초기화될 수 있도록 해준다. 2. jp.getSignature( )와 getName()을 통하여 메서드의 이름을 호출할 수 있게 작성해준다. 3. System.out.println("호출된 핵심관심 : "+ methodName); 을 작성하여 값을 확인할 수 있도록 해준다. 4. Object배열에서 getArgs( ) 메서드로 해당 메서드에 사용된 인..
2022.04.07 -
[ Spring ] AOP ( Aspect Oriented Programming ) - 관점 지향 프로그래밍 | 로그 작성하기
사용 목적 공통적으로 수행되는 로직을 공통 로직 ( 횡단 관심 ) 이라 부르는데, 공통 로직과 핵심 로직 ( 비즈니스 메서드, CRUD ) 으로 분리하기 위해 사용한다. ex) 로깅 인증, 허가, 트랜잭션, 연결, 해제 등등 ( 공통 로직 ) 1. LogAdvice 클래스를 생성해준다. 2. 비즈니스 메서드마다 new 해줘도 로그는 남겨진다. 하지만 결합도가 높아지기 때문에 유지 보수에 매우 불리한 코드가 된다. 3. 결합도를 낮추기 위해 LogAdvice를 멤버 변수화하여 상단에 작성해준다. (의존관계) 4. 클라이언트에서 실행을 하면 결과는 이렇게 나온다. Q. 만약에 로그 2를 만들면 어떻게 될까? ( ex. 버전 관리 ) A. 여전히 결합도가 높아서 메서드명을 하나하나 바꾸어줘야 한다. 해결 방법..
2022.04.04 -
[ Spring ] IOC (Inversion of Control) - 디자인 패턴(Factory) 활용
[ Spring ] IOC (Inversion of Control) - 인터페이스 활용 1. TV라는 인터페이스를 생성하여 강제성을 부여해준다. package test; public interface TV { public void powerOn(); public void powerOff(); public void volumeUp(); public void volumeDown(); } 2. TV를 i.. daunee.tistory.com 디자인 패턴을 사용하는 이유 - 다양한 목적의 재사용성이 용이한 코드를 설계하기 위해 사용 - 재사용을 통한 개발 시간 단축 - 개발자들의 원활한 협업이 가능 - 소프트웨어의 구조를 파악하기 용이 · 팩토리 메소드 패턴(Factory Method Patt..
2022.04.01 -
[ Spring ] IOC (Inversion of Control) - 인터페이스 활용
1. TV라는 인터페이스를 생성하여 강제성을 부여해준다. package test; public interface TV { public void powerOn(); public void powerOff(); public void volumeUp(); public void volumeDown(); } 2. TV를 implements 하여 LgTV와 SamsungTV를 만들어준다. package test; public class SamsungTV implements TV { public SamsungTV() { System.out.println("SamsungTV 객체생성"); } public void turnOn() { System.out.println("전원을 켭니다."); } public void tur..
2022.04.01 -
[ Spring ] 스프링 프레임워크의 특징
1. 프레임워크를 왜 사용해야할까? - 관리가 용이함 - 개발시간 단축 - 개발자들의 역량이 획일화 됨 - 재사용성 증가 2. 스프링 프레임워크의 특징 관점 지향 프로그래밍 AOP (Aspect Oriented Programming) 어떤 로직을 핵심적인 관점과 부가적인 관점으로 나누어서 보고 각각 모듈화하여 사용하는 개념. 여기서 핵심기능은 비즈니스 로직이 되는 핵심적인 처리를 말하는 것이고, 부가기능은 보안이나 로깅 등을 의미한다. - 관점지향 프로그래밍은 로직들을 전부 분리해서 저장할수있게 해주기 때문에, 응집도가 높아진다. - 낮은 결합도와 높은 응집도를 갖는, 유지보수에 용이한 코드다. [ Inversion Of Control, IOC ] - 프레임워크가 객체와 코드의 실행을 제어한다. - ..
2022.03.29