분류 전체보기(95)
-
[ 스프링 오류 ] java.lang.IllegalStateException
새로운 프로젝트 도중 모델 작업하다가 템플릿 구조를 보고 싶어 서버를 실행하였는데 아래 두 가지 에러가 발생하였다. 해결방법을 알아보자! 1. 문제 : java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Thu Apr 07 17:21:21 KST 2022]; root of context hierarchy 2. 문제 : java.lang.IllegalStateException: BeanFactory not initialized or alread..
2022.04.08 -
[ 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 -
[10분 테코톡] 🌕제이의 Spring AOP
인프라 로직이란 ? - 애플리케이션의 전 영역에서 나타날 수 있다. - 중복 코드를 만들어낼 가능성 때문에 유지보수가 힘들어진다. - 비즈니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워진다. -관점 지향 프로그래밍은 횡단괌심에 따라 프로그래밍 하는 것을 의미하고, 애플리케이션을 객체 지향적으로 코드를 구성할 수 있도록 보완해준다. 용어 기능 Target 어떠한 대상에 부가 기능을 부여할 것인가 Advice 어떠한 기능을 부가적으로 구현할 것인가! - Before, 메서드가 실행되기 전 - AfterReturning,메서드가 실행된 후 값을 리턴할 때 - AfterThrowing, 메서드가 실행되는 과정에서 예외가 발생하였을 때 - After, 메서드가 끝냈을 때 - Around, 메서드가 실행되..
2022.04.05 -
[ Spring ] AOP ( Aspect Oriented Programming ) - 관점 지향 프로그래밍 | 로그 작성하기
사용 목적 공통적으로 수행되는 로직을 공통 로직 ( 횡단 관심 ) 이라 부르는데, 공통 로직과 핵심 로직 ( 비즈니스 메서드, CRUD ) 으로 분리하기 위해 사용한다. ex) 로깅 인증, 허가, 트랜잭션, 연결, 해제 등등 ( 공통 로직 ) 1. LogAdvice 클래스를 생성해준다. 2. 비즈니스 메서드마다 new 해줘도 로그는 남겨진다. 하지만 결합도가 높아지기 때문에 유지 보수에 매우 불리한 코드가 된다. 3. 결합도를 낮추기 위해 LogAdvice를 멤버 변수화하여 상단에 작성해준다. (의존관계) 4. 클라이언트에서 실행을 하면 결과는 이렇게 나온다. Q. 만약에 로그 2를 만들면 어떻게 될까? ( ex. 버전 관리 ) A. 여전히 결합도가 높아서 메서드명을 하나하나 바꾸어줘야 한다. 해결 방법..
2022.04.04 -
[ 오라클 오류 ] java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
문제 : java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 오류가 발생 해결 방법 : 1) 실행중인 프로젝트 우클릭하여 Build Path에 들어가 Configure Build Path에 접속한다. 2) Libraries에서 우측에 Add Library 클릭한다. 3) ojdbc6.jar 파일을 추가한다. 4) 추가가 되면 Apply하고 다시 실행시키면 오류가 해결된다.
2022.04.04