instanceof, Class.isAssignableFrom Instanceof instanceof는 해당 Object가, 특정 Class, Interface를 상속하거나 구현 했는지를, boolean type으로 return해주는 method이다. public class Gillog extends Gil { ... } Gillog obj = new Gillog(); // true if (obj instanceof Gil) { ... } Class.isAssignableFrom Class.isAssignableFrom은 특정 Class가, 특정 Class, Interface를 상속하거나 구현 했는지를, boolean type으로 return해주는 method이다. // true if (Gillog.class.isAssignableFrom(Gil.class)) { .. Resolver 란? HandlerMethodArgumentResolver HandlerMethodArgumentResolver는 Interface로써, Controller의 Argument(Parameter)에 지정된 변수들을,Annotation이나 객체의 Type에 따라서 Resolver를 먼저 거쳐, 실제 Data를 Controller에 넘겨주는 역할을 수행한다 Controller에 들어오는 Argument(Parameter)를 가공(암호화 > 복호화) 하거나,Argument(Parameter)를 추가하거나 수정해야 하는 경우에 사용한다. 사용이유 HandlerMethodArgumentResolver를 사용하는 이유는, 매개변수로 사용되는 인자에 대해 공통적으로 처리해야할 로직등이 있을 경우, 중복 코드를 줄이고 공통 .. [1권] 토비의 스프링 10일차 @Transactional 사용되는 PointCut은 TransactionAttributesSourcePointCut이다. @Transactional이 타입레벨이든 메소드 레벨이든 상관없이 부여된 빈 오브젝트를 모두 찾아서 포인트컷의 선정결과로 돌려준다. @Transactional은 기본적으로 트랜잭션 속성을 정의하는 것이지만, 동시에 포인트컷의 자동등록에도 사용된다. 트랜잭션의 전파는 트랜잭션 매니저를 통해 트랜잭션 동기화 방식이 적용하기 때문에 가능하다. Checked Exception And UnChecked Exception https://techblog.woowahan.com/2606/ 응? 이게 왜 롤백되는거지? | 우아한형제들 기술블로그 {{item.name}} 이 글은 얼마 전 에러로그 하나에 대한 호기심과 의문으로 시작해서 스프링의 트랜잭션 내에서 예외가 어떻게 처리되는지를 이해하기 위해 삽질을 해본 경험을 토대로 쓰여졌습니다. techblog.woowahan.com 해당 내용을 읽고 Checked Exception과 UnChecked Exception을 정리해보려 한다. Checked Exception 자바의 예외는 크게 3가지 포인트로 나눌수 있습니다. Checked Exception UnChecked Exception Error Error 에러는 시스템에 비정상적인 상황이 발생했을 경우에 발생합니다. 예를들어,.. [1권] 토비의 스프링 9일차 트랜잭션 속성 DefaultTransactionDefinition - 전파 속성 : PROPAGATION_REQUIRED 트랜잭션 전파 PROPAGATION_REQUIRED 가장 많이 사용하는 트랜잭션 전파 속성 진행 중인 트랜잭션이 없으면 새로 만들고 있다면 기존 트랜잭션에 참여한다. PROPAGATION_REQUIRES_NEW 항상 새로운 트랜잭션을 시작한다. PROPAGATION_NOT_SUPPORTED 트랜잭션을 무시한다. AOP를 통해 여러개의 메소드를 적용하고 그 메소드중에서 특별난것을 뺄때 주로 사용한다. 스프링이 제공하는 TransactionInterceptor에는 기본적으로 두가지 종류의 예외 처리 방식이 있다. 런타임 예외가 발생하면 트랜잭션은 롤백된다. 반면에, 타깃메소드가 런타임 예.. [1권] 토비의 스프링 8일차 확장된 포인트컷 기존의 MethodMatcher는 Method에 Proxy를 적용하기 위해 사용하는 메소드이다. 스프링 빈 오브젝트를 프록시 오브젝트로 만들기 위해 사용하는 Method는 getClassFilter()이다. 만약 PointCut 선정 기능을 모두 적용한다면, 먼저 프록시를 적용할 클래스인지 판단하고 나서, 적용 대상 클래스라면 어드바이스를 적용할 메소드인지 확인하는 식으로 동작한다. -> 결국 두가지를 충족해야 타깃의 메소드에 어드바이스가 적용되는 것이다. 즉, 모든 빈에 대해 프록시 자동 적용 대상을 선별해야 하는 빈 후처리기인 DefaultAdvisorAutoProxyCreator는 클래스와 메소드 선정 알고리즘을 모두 갖는 포인트컷이 필요하다. 설정 즉, Parent Attribut.. [1권] 토비의 스프링 7일차 중복문제의 해결방법 변하지 않는 부분 -> Proxy 생성 팩토리에 맞기고 변하는 부분은 프록시 생성 팩토리에 DI로 적용. 반복적인 ProxyFactoryBean 설정문제 -> 설정 자동기법(다이내믹 프록시가 인터페이스만 제공하면 모든 메소드에 대한 구현 클래스를 자동으로 만들듯이) 빈후처리기를 이용한 자동 프록시 생성기 확장 포인트 BeanPostProcessor인터페이스를 구현해서 만든 빈 후처리기 -> 말그대로 빈 오브젝트로 만들어지고 난 후에, 빈 오브젝트를 다시 가공할수 있게 해준다 -> 빈 후처리기를 스프링에 적용 -> 빈 후처리기 자체를 빈으로 등록 -> 스프링은 빈 후처리기가 등록되어 있다면 빈이 생성될때마다 후처리기로 보내 후처리 작업을 진행한다 -> 스프링이 등록하는 빈 오브젝트의 일.. [1권] 토비의 스프링 6일차 다이내믹 프록시를 위한 팩토리 빈 스프링 빈 기본적으로 클래스 이름과 프로퍼티로 정의된다. 스프링은 지정된 클래스 이름을 가지고 리플렉션을 이용해서 해당 클래스 오브젝트를 만든다. 스프링은 클래스 정보를 가지고 디폴트 생성자로 오브젝트를 만든다. 다이내믹 프록시를 만들어주는 팩토리 빈 Proxy의 newProxyInstance() 메소드를 통해서만 생성이 가능한 다이내믹 프록시 오브젝트는 일반적인 방법으로는 스프링의 빈으로 등록할수 없다. 대신 팩토리 빈을 사용하면 가능하다. 팩토리 빈의 getObject() 메소드에 다이내믹 프록시 오브젝트를 만들어주는 코드를 넣으면 되기 때문이다. MethodInterceptor의 invoke() Method는 ProxyFactoryBean으로부터 타깃 오브젝트에 대.. 이전 1 2 3 4 5 6 7 8 ··· 32 다음