본문 바로가기

Spring

(4)
[Spring] AOP, Spring AOP AOP Aspect Oriented Programming(관점 지향 프로그래밍) 로직을 기준으로 핵심 관점(비즈니스 로직)과 부가 관점을 나누고, 관점을 기준으로 모듈화하는 것 데이터베이스 연결, 로깅, 파일 입출력, 시간 측정 등의 여러 번 반복해서 사용하는 흩어진 Aspect를 모듈화해 핵심 로직에서 분리하여 재사용이 가능하도록 하는 방법이다 같은 일을 반복하는 코드를 독립적으로 작성하고 적용해야 하는 부분을 개발자가 구체적으로 작성해 적용할 수 있다. 주요 용어 Aspect 흩어진 관심사를 모듈화 한 것 Advice + Pointcut Target Aspect를 적용하는 곳(클래스, 메소드 등) Advice 실질적으로 수행하는 기능 제공할 부가기능을 담고 있다 Join Point Advice가 적용..
[Spring] Bean 주입하기 : DI 스프링에서는 객체의 생성과 소멸 등에 대한 제어를 컨테이너가 관리하고 필요할 때 주입을 받아 사용하게 된다. DI 방법 1. 생성자 기반 주입 종속성을 나타내는 인수로 생성자를 호출하는 컨테이너에 의해 수행된다. 컨테이너가 알아서 생성자에게 객체를 넣어주면서 생성하게 된다. 생성자의 파라미터를 통해 의존 관계를 파악하기 쉽다는 장점이 존재한다. public class SimpleMovieLister { private final MovieFinder movieFinder; public SimpleMovieLister(MovieFinder movieFinder) { this.movieFinder = movieFinder; } } 클래스에 생성자가 한 개만 존재하고 매개 변수 타입이 빈으로 등록되어 있다면 사..
[Spring] Bean Scope와 주의할 점 일반적으로 스프링은 처음 구동될 때 초기에 모든 Bean을 생성하고 인스턴스를 생성한다. 하지만, 매번 다른 객체가 사용되어야 하는 경우에는 Bean의 scope를 변경하면 매번 다른 객체를 생성해 사용할 수 있게 된다. Bean Scope singleton 기본적으로 다른 설정을 지정하지 않았을 때 지정된다. 애플리케이션을 구동하면 bean마다 하나의 객체가 생성되고 스프링을 통해 bean을 주입받게 된다면 언제나 같은 객체를 참조하게 된다. 하나의 객체를 통해 주입하게 되므로 메모리를 절약할 수 있고, 런타임시 성능 최적화에 유리하다는 장점이 존재한다. 하지만, 프로퍼디를 공유하기 때문에 다른 객체에서 값을 변경해도 그대로 참조되어 예상치 않게 값이 변경될 수 있고, 초기에 모든 빈을 생성해야 하기 ..
Mattermost Webhook를 활용한 Spring Exception Sender 만들기 이전까지는 팀 프로젝트를 진행할 때 기능별로 분류를 했었는데, Spring을 모르는 팀원과 같이 프로젝트를 진행하게 되어 역할 분담을 프론트엔드와 백엔드로 나눠 진행하게 되었다. 그러다보니 프로젝트에서 발생한 에러를 수정하기 위해 로그를 보기 어려웠다. 그러던 중 MatterMost를 통해 에러를 받아볼 수 있다는 것을 알게 되어 제작을 해보았다. 기본적으로 Message Template 중 Attachments의 디자인이 가장 마음에 들어 해당 형식으로 작성하기로 했다.ㅤ 이런 느낌... 또한 StackTrace도 함께 보내고 싶었는데 메세지에 모두 담으면 너무 길어져 보기 불편해 어떻게 보낼까 고민하던 중 props.card를 사용하면 Additional Info 로 활용할 수 있다고 하여 추가적으로..