본문 바로가기

Programming/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을 주입받게 된다면 언제나 같은 객체를 참조하게 된다. 하나의 객체를 통해 주입하게 되므로 메모리를 절약할 수 있고, 런타임시 성능 최적화에 유리하다는 장점이 존재한다. 하지만, 프로퍼디를 공유하기 때문에 다른 객체에서 값을 변경해도 그대로 참조되어 예상치 않게 값이 변경될 수 있고, 초기에 모든 빈을 생성해야 하기 ..
[Spring] Bean을 등록하는 방법 스프링에서는 빈을 개발자가 직접 생성하지 않고 스프링에게 위임해 생성된 빈을 주입하는 방법으로 사용하게 된다. IOC를 위해 주입할 빈을 등록하고 관리를 위임해야 한다. 1. xml에 직접 설정하기 // application.xml ApplicationContext context = new ClassPathXmlApplicationContext("application.xml"); 단점으로는 모든 빈을 직접 등록하고 의존성도 모두 작성해야 했기 때문에 굉장히 번거롭고 불편하다. 2. Component Scan @Component 가 붙은 객체를 스캔해 등록한다. @Service, @Repository, @Controller, @Configuration 들은 모두 @Component를 상속받고 있기 때문에 ..