본문 바로가기
반응형

스프링17

[Spring] 스프링에서 AOP를 구현하는 방법 AOP를 구현하는 방법은 여러 가지 있지만, 스프링에서는 프락시(proxy)를 이용한다. 스프링에서 AOP를 구현하는 방법 · 프락시를 이용한 AOP는 아래 그림처럼 인터페이스를 구현한 프락시를 이용해서 Q 클래스가 호출한 메서드를 가로채서 어드바이스를 동작시킨다. · Q 클래스에는 R 인터페이스 타입의 인스턴스 변수가 있고, 인터페이스 R을 구현한 RImpl 클래스를 DI를 활용하여 이용한다. 이때, RImpl 클래스의 어느 메서드를 실행해도 어드바이스가 동작하게 설정됐다고 가정한다. - 스프링이라면 @Autowired 어노테이션이 붙는다. · DIxAOP 컨테이너는 R 인터페이스를 구현한 프락시 클래스의 인스턴스를 자동으로 생성, Q 클래스의 R 인터페이스 변수에 인젝션한다. - Q 클래스는 R 인터.. 2021. 11. 10.
[Spring Boot] 스프링 MVC 인터셉터란? 스프링 부트에서 사용하기 학습 목표 · 인터셉터란? · 의존성 추가 · 스프링 부트에서 인터셉터 사용하기 인터셉터란? · Spring Interceptor는 클라이언트 요청을 가로채서 처리하는 데 사용된다. · 스프링에서 요청이 컨트롤러로 전송되면 컨트롤러에서 처기되기 전, 컨트롤러에서 응답을 받은 후에 클라이언트에 응답을 보내기 전, 응답 완료 후(뷰가 렌더링 된 후)에 Interceptor를 통과한다. · 로깅 및 권한 인증 확인 등 반복적인 처리 코드를 피하는 데 도움을 줄 수 있다. 인터셉터는 org.springframework.web.servlet.HandlerInterceptor 인터페이스를 구현하거나, org.springframework.web.servlet.handler.HandlerInterceptorAdapte.. 2021. 11. 4.
스프링 부트 AutoConfigure가 작동하는 원리 스프링 부트 AutoConfigure는 클래스 경로에 있는 의존성을 기반으로 스프링 애플리케이션을 자동으로 구성한다. 스프링 부트는 클래스 경로에서 클래스를 감지하고, AutoConfigure 매커니즘은 필요한 빈을 생성하고 연결한다. 이것은 스프링 부트의 가장 강력한 기능 중 하나이고, 대부분의 작업은 백그라운드에서 자동으로 발생한다. Auto-Configuration Report 스프링 부트의 application.properties 파일에서 debug=true를 설정하면, 스프링 부트 애플리케이션에 대한 Auto-Configureation Report를 활성화할 수 있다. 그리고 애플리케이션을 실행하면, 다음과 같은 출력을 확인할 수 있다. ============================ CON.. 2021. 10. 26.
스프링에서 버전을 일관성있게 다루는 방법: BOM Maven POM · Maven에서 종속성을 가져오고 프로젝트를 빌드하는 데 사용하는 정보 및 설정을 포함하는 XML 파일 Maven BOM · Bill Of Materials(자재 명세서)의 약자 · 프로젝트 종속성의 버전을 제어하고, 해당 버전을 정의하며, 업데이트하는 중앙 위치를 제공하는 데 사용되는 특별한 종류의 POM - BOM은 의존해야 하는 버전에 대한 걱정없이, 모듈에 의존성을 추가할 수 있는 유연성을 제공함 Transitive Dependencies(전이 의존성) Maven은 pom.xml에서 자체 의존성에 필요한 라이브러리를 발견하고, 자동으로 포함할 수 있다. 또한 라이브러리가 수집되는 의존성 수준의 개수는 제한이 없다. 이때, 2개의 의존성이 특정 아티팩트의 다른 버전을 참조할 때 .. 2021. 10. 26.
[Spring] The dependencies of some of the beans in the application context form a cycle 양방향 의존관계 오류 The dependencies of some of the beans in the application context form a cycle 양방향 의존관계 오류 스프링 프레임워크에서는 @Autowire 어노테이션을 이용해서 의존성 주입을 한다. 그런데 서로 다른 두 개의 클래스에서 서로를 의존성 주입하면 위와 같이 양방향 의존관계 오류가 발생한다. 위 이미지에서는 userService, reservationService 클래스가 서로를 의존성 주입하고 있어 오류가 발생했다. 이는 A를 변경하면 B가 영향을 받고, B를 변경하면 A가 영향을 받으므로 나쁜 설계라고 할 수 있다. 이를 해결하기 위해 A>B, B>A 의존 관계가 있다면 새로운 C를 만들어서 A>B>C로 의존관계를 갖도록 변경하여 문제를 해결 .. 2021. 8. 9.
[Spring] @Scheduled - 스프링에서 주기적인 작업을 진행하는 법 스프링에서는 @Scheduled 어노테이션을 사용해서 주기적인 작업을 진행할 수 있다. 예를 들어 매일 아침마다 미정산 고객에게 결제를 시도하기, 일요일마다 고객에서 push 메세지 보내기 등을 할 수 있다. 이 글에서는 Spring 4.0 버전에서 XML 파일 설정을 통해 @Scheduled 기능을 사용한다. 학습 목표 - 초기설정 - Fixed Rate - InitialDelay - Cron Expression - Parameterizing 초기 설정 1. 주기적인 작업을 수행할 클래스 생성 스프링 프로젝트에 다음과 같은 자바 코드를 추가한다. import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.sch.. 2021. 5. 21.
반응형