@Enable + Registrar 는 Application 생성 후에 Registarar가 실행되어 Bean을 생성 /등록해서, Application Code에서 @Autowired로 DI할 수 없는 문제점이 있었다. 이 문제를 해결하기 위한 개선된 코드를 추가한다. import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.common.reflect.ClassPath; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.fact..
Sample Code import org.springframework.context.annotation.Import; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Import({ PracticeConfigRegistrar.class }) public @interface EnablePracticeConfigAnnotation { Class[] basePackageClasses(); } 1. @Enable 어노테이션을 만들어서 Conifguration에 Registrar를 등록한다. import org.springframework.beans.fa..
특정 범위에 포함된 모든 Controller에서 발생하는 Exception을 전역처리할 때 ControllerAdvice를 사용한다. import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframe..
1. JSR-303 JSR- 303는 자바플랫폼의 유효성 검사 제약사항 선언과 메타데이터를 표준화한다. JSR-303 API를 사용해서 선언적인 유효성 제약사항으로 도에인 모델 프로퍼티에 어노테이션을 붙히고 런타임시에 이를 강제할 수 있다. 사용할 만한 다수의 내장 제약사항이 존재한다. 물론 자신만의 커스텀 제약사항도 정의할 수 있다. 2. JSR-303 Specification 검증은 Field 및 Collection에 사용할 수 있다. Annotation Specification @NotNull validates that the annotated property value is not null @AssertTrue validates that the annotated property value is t..
1. create aop class import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Slf4j @Aspect @Component public class SomeAop { @Around("execution(* com.project.kanban.web.SomeController.*(..))") public Object aroundLogging(ProceedingJoinPoint..
1. create request proxy class import lombok.Getter; import lombok.ToString; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.stereotype.Component; @Getter @ToString @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class SomeRequestProxy { private String preString; pr..
1. create some argument resolver class import org.springframework.core.MethodParameter; import org.springframework.mobile.device.Device; import org.springframework.mobile.device.DeviceResolver; import org.springframework.mobile.device.LiteDeviceResolver; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.s..
1. create some interceptor class import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.WebContentInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Slf4j public class SomeInterceptor extends WebContentIn..
DI (Dependency Injection) DI는 Spring의 꽃이다. Class 간의 직접적인 관계를 끊어주기 때문이다. DI가 아니면 A Class에서 B Class를 사용하려면 인스턴스를 생성하거나 생성자 혹은 Setter를 사용해야 한다. Spring DI를 사용하면 아래 코드처럼 사용할 수 있다. // DI AS - IS class A { private B b; public void setB(B b) { this.b = b; } public String testMethod() { return b.service(); } } or class A { private B b; public A(B b) { b = b; } public String testMethod() { return b.servic..
Flow 1. Spring Web MVC Project 시작- was -> onStartup java configuration 기반의 spring web mvc 프로젝트는 was에서 onStartup 메소드가 호출되면서 시작한다.onStartup에서는 아래와 같은 일이 일어난다. 1. rootApplicationContext를 생성2. ServletContext에 rootApplicationContext 등록3. filter 등록4. dispatcherServlet 등록 2. AnnotationConfigApplicationContext 생성- was -> onStartup -> rootApplicationContext defaultListableBeanFactoryannotationConfigAppli..
- Total
- Today
- Yesterday
- DI
- Criteria
- java generic
- scikit-learn
- Property
- Embedded Mapping
- guava
- docker
- Sprint RetryTemplate
- RetryTemplate
- Spring
- Join Table
- Typesafe Config
- JPA Criteria
- Discriminate Mapping
- Charles proxy
- Akka
- Embeddable Mapping
- Spring JDBC Template
- Query DSL
- SmartLifecycle
- JPA
- 복합키 Mapping
- Spring Registrar
- java EqualsAndHashCode
- Mapping
- Registrar
- java Equals
- @Primary
- spring spel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |