Java(33)
-
ThreadLocal
일반 변수의 수명은 특정 코드 블록 범위 내에서만 유효합니다. { int a = 10; // 변수 a는 현재 코드 블록내에서만 유효 } ThreadLocal을 이용하면 스레드 영역에 변수를 설정할 수 있기 때문에, 특정 스레드가 실행하는 모든 코드에서 그 스레드에 설정된 변수 값을 사용할 수 있게 됩니다. public class ThreadLocalTest implements Runnable { @Data @AllArgsConstructor static class UserInfo { private String name; } private static final ThreadLocal userInfoThreadLocal = new ThreadLocal() { @Override protected UserInf..
2020.05.26 -
EHCache
1. EHCache란 EHCache란 Java의 대표적인 캐시 엔진 중의 하나입니다. 특징 경량의 빠른 캐시 엔진 메모리, 디스크 저장 지원, 멀티 CPU의 동시 접근에 튜닝 동기, 비동기 복사, 피어 자동 발견 사용 이유 Java 메소드에 캐싱을 적용함으로써 캐시에 보관된 정보로 메소드의 실행 횟수를 줄여줍니다. 대상 메소드가 실행될 때마다 추상화가 해당 메소드가 같은 인자로 이미 실행되었는지 확인하는 캐싱 동작을 적용합니다. 해당 데이터가 존재한다면 실제 메소드를 실행하지 않고 결과를 반환하고 존재한다면 메소드를 실행하고 그 결과를 캐싱한 후, 사용자에게 반환해서 다음 번 호출 시에 사용할 수 있게 합니다. 2. EHCache 사용 방법 Maven 의존성 추가 net.sf.ehcache ehcache..
2020.05.13 -
Transaction Template
1. @Transactional의 한계 public class TransactionInvoker { private A1Dao a1dao; private A2Dao a2dao; public void setA1dao(A1Dao dao){ this.a1dao = dao; } public void setA2dao(A2Dao dao){ this.a2dao = dao; } // 외부에서 호출하는 method public void invoke() throws Exception{ doInternalTransaction(); } @Transactional public void doInternalTransaction() throws Exception{ a1dao.insertA1(); a2dao.insertA2(); } }..
2020.05.07 -
@ExceptionHandler
1. @ExceptionHandler @ExceptionHandler는 @Controller, @RestController가 적용된 빈에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 합니다. @RestController public class MyRestController { @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } 위와 같이 @ExceptionHandler를 쓰고 캐치하고 싶은 예외 클래스를 인자로 등록해주면 사용할 수 있습니다. 예제와 같이 사용한다면 MyRestControlle..
2020.04.26 -
Filter, Interceptor, AOP의 차이
1. Filter Filter는 DispatcherServlet 이전에 실행이 되어 Filter가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있습니다. 또한 자원의 처리가 끝난 후 응답 내용에 대해서도 변경하는 처리를 할 수 있습니다. Filter는 웹 설정에 기본적으로 등록되는데 대표적으로 인코딩변환, 로그인 여부확인, 권한 체크 등의 요청에 대한 처리로 사용됩니다. Web.xml에서 필터의 예시 encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encoding /* 2. Interceptor Interceptor는 DispatcherServlet가 컨트롤러를 호출하기 전..
2020.04.22 -
AOP
1. AOP란 프로그래밍을 하다 보면, 공통적인 기능이 많아집니다. 이러한 공통기능을 모듈에 적용하기 위한 방법으로 상속을 이용할 수 있습니다. 하지만 JAVA에서는 다중 상속이 불가능합니다. 그리고 이러한 모듈을 계속 상속받아 공통 기능을 부여하기에는 한계가 있을 뿐더러 보기에도 불편하고 효율성도 떨어집니다. 이를 해결하기 위해 나타난 AOP는 핵심 기능과 공통 기능을 분리해, 공통 기능을 필요로 하는 핵심 기능들에 적용하는 방식입니다. 아래 그림과 같이, 붉은 상자에 있는 공통 부분들을 분리해내는 것입니다. 2. AOP의 용어 Aspect: 공통 기능의 모듈 Advice: Aspect를 구현한 객체 JoinPoint: Advice를 적용해야 하는 부분(ex: 필드, 메소드 - spring에서는 메소드..
2020.04.18