개발공부/스프링 철저 입문(4)
-
(4) 2장_스프링 코어(DI, AOP) - Resource 추상화, Message 관리
2장의 마지막 개념 Resource 추상화와 Message 관리입니다. 제 생각엔 중심 개념은 아니지만 사용하면 편리한 라이브러리여서 알아두면 좋을 것 같습니다. Resource 추상화 애플리케이션을 개발할 때 디렉터리나 war 파일, jar 파일 등 이러한 리소스의 위치를 모두 알고 접근해야 하지만 리소스 추상화 기능을 활용하면 구체적인 위치 정보를 직접 다루지 않아도 리소스에 접근할 수 있게 됩니다. classpath를 관리합니다. Resource 인터페이스의 구현 클래스(UrlResource)를 통해 웹 리소스 가져오기 1 2 3 4 5 6 7 8 public void accessResource() throws IOException { Resource greetingResource = new Url..
2021.03.25 -
(3) 2장_스프링 코어(DI, AOP) - AOP, SpEL
AOP(관점 지향 프로그래밍) 비즈니스 로직과 관련 없지만 여러 모듈에 걸쳐 공통적이고 반복적으로 처리가 필요한 내용을 횡단 관심사(Cross-Cutting Concern)이라고 합니다. 이를 DRY(Do not Repeat Yourself)대로 분리해서 한 곳으로 모으는 방법을 관점 지향 프로그래밍(AOP)라고 합니다. 예시로 보안, 로깅, 트랜잭션 관리, 모니터링, 캐시처리, 예외처리가 있습니다. AOP 용어 - Aspect : AOP 단위가 되는 횡단 관심사(ex.로그를 출력한다, 예외를 처리한다...등) - Join Point : 횡단 관심사가 실행될 지점이나 시점(정상 종료나 예외 발생)을 말한다. - Advice : 실행되는 코드; 횡단 관심사를 실제로 구현해서 처리하는 부분(Around, B..
2021.03.22 -
(2) 2장_스프링 코어(DI, AOP) - Bean 스코프, Profile
지난 글에 이어 의존성 주입(DI)를 마무리 짓는 글입니다. Bean이 같은 타입(이름)으로 여러 개 있을 때 설정, Component 타입, Bean 스코프/생성주기 그리고 Spring Profile 기능까지 다뤄보겠습니다. @Autowired 어노테이션을 통해 의존성 주입하는 방식입니다. DI 컨테이너가 자동으로 필요로 하는 의존 Component를 주입하게 합니다. 예시로 필수 조건을 완화해서 필드 인젝션한 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 @Autowired(required = false) PasswordEncoder passwordEncoder; //스프링 4부터는 Optional을 사용할 수 있다. @Autowired Optional passwordEncoder; p..
2021.03.18 -
(1) 2장_스프링 코어(DI,AOP) - Bean설정과 의존성 주입
스프링 프레임워크 기초에서 가장 중요한 부분은 DI(Dependency Injection:의존성 주입)이라고 생각합니다. 객체를 다른 클래스에서 인스턴스로 일일이 초기화할 필요없이 컨테이너에 담아놓은 Bean을 꺼내 쓸 수 있기 때문이죠. DI는 DI 컨테이너에 인스턴스를 등록해 사용 시 제공하는 특성 때문에 IoC(InversionofControl:제어의 역전) 디자인 패턴의 한 종류입니다. 그리고 DI 컨테이너에 등록하는 Component를 Bean이라고 하며 이를 찾아오는 행위를 lookup이라고 합니다. Bean설정 방법 세 가지 방식이 있는데, 보통 Annotation 설정 방식과 다른 하나를 조합해서 쓴다고 합니다. - Java 기반 설정방식 : 클래스에 @Configuration, 메서드에 ..
2021.03.15