Spring/Spring 입문 - 개념 및 핵심 새로비 2022. 1. 9. 22:16
| 스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. ..
더 읽기
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 19. 21:52
| 스프링 Expression Language : SpEL SpEL은 Spring Expression Language의 줄임말로 스프링의 객체들의 정보를 질의하거나 조작하여 어떤 값을 표현할 수 있는 강력한 표현 언어다. 객체들의 정보는 레퍼런스로 연관되어 있는 객체 그래프를 탐색하여 얻어지므로 런타임 때 SpEL의 표현식 값이 결정(Resolve)된다. 참고로 객체 그래프는 런타임 때 객체 간의 연관 관계를 통해 그려지는 그래프를 의미하는 말이다. | SpEL의 내부 구성 SpEL은 내부적으로 ExpressionParser 객체를 통해 SpEL의 표현식을 파싱하며 StandardEvaluationContext 객체를 통해 스프링 빈이 가지고 있는 객체 정보를 구한다. 이 두 정보를 가지고 표현식 객체와..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 19. 05:31
| Converter와 Formatter PropertyEditor는 스프링 초창기에 썼던 데이터 바인딩 인터페이스였지만 후에 이를 대체할 Converter와 Formatter란 데이터 바인딩 인터페이스가 나오게 되었다. Converter는 S타입을 T 타입으로 변환할 수 있는 일반적인 변환기이며 Thread-safe하다. Formatter는 Object와 String간의 변환을 담당하며 문자열을 Locale에 따라 다국화하는 기능을 제공한다. 웹 어플리케이션을 제작할 때는 주로 Formatter를 사용한다. | Converter 구현 Converter는 제네릭으로 두 개의 인자, Source와 Target을 받아서 구현한다. 또한 Converter는 PropertyEditor와는 다르게 Thread-s..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 17. 23:53
| 스프링 데이터 바인딩( Spring Data Binding ) 스프링에서는 사용자가 입력한 값을 타겟 객체에 설정하는 데이터 바인딩 기능을 지원한다. org.springframework.validation.DataBinder 인터페이스를 통해서 데이터 바인딩 기능을 지원하며 사용자가 입력한 값을 도메인 모델에 동적으로 변환해서 넣어준다. 이 기능이 필요한 이유는 다음과 같은 이유에서다. 사용자의 입력값은 대부분 문자열이지만 자바의 객체가 가지고 있는 데이터 타입은 int, long, Data, Double 혹은 사용자가 작성한 클래스로 만들어진 객체 Event, Book 같은 것이다. 따라서 사용자의 이런 문자열 입력값을 자바의 데이터 타입으로 변환해서 넣어줘야하는 데, 이때 적절하게 데이터를 넣어주..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 16. 23:53
| 스프링 Validation 추상화 스프링에서는 Validator 인터페이스를 지원하여 어플리케이션에서 사용하는 객체를 검증할 수 있는 기능을 제공한다. 이 Validator 인터페이스는 어떤 특정 계층에 사용하는 기능이 아닌 모든 계층에서 사용할 수 있다. Validator는 Java EE Spec인 Bean Validation의 어노테이션을 이용하여 객체가 제대로 요구사항에 맞추어 생성 됬는지 검증할 수 있다. | Validator 인터페이스 Validator 인터페이스를 상속한 클래스는 두 메서드를 구현해야 한다. boolean supports(Class clazz) : 어떤 타입의 객체를 검증할 때 이 객체의 클래스가 이 Validator가 검증할 수 있는 클래스인 지를 판단하는 매서드void ..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 14. 21:13
| 스프링 Resource 추상화 스프링의 Resource 객체는 java.net.URL을 추상화한 인터페이스다. Resource 객체는 스프링 내부에서 가장 많이 사용하는 인터페이스이며 스프링 IoC 컨테이너가 생성될 때, 컨테이너 설정 정보를 담는 파일들을 가져올 때도 사용된다. 리소스를 읽어오는 기능을 Resource 인터페이스를 통해 추상화한 이유는 다음과 같다. 1. 클래스 패스 기준으로 리소스 읽어오는 기능 부재2. ServletContext를 기준으로 상대 경로로 읽어오는 기능 부재3. 새로운 핸들러를 만들어 사용할 수 있지만 기능이 복잡하고 편리하지 않다. | Resource 인터페이스 구현체 Resource 인터페이스를 구현한 구현체들의 목록은 다음과 같다. 1. UrlResource :..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 13. 12:50
| 스프링 ResourceLoader ResourceLoader는 리소스를 읽어오는 기능을 제공하는 인터페이스다. ApplicationContext 인터페이스는 이 ResourceLoader 인터페이스를 상속받은 상태이므로 ApplicationContext를 통해서도 ResourceLoader가 제공하는 메서드를 사용하는 것이 가능하다.@Component public class AppRunner implements ApplicationRunner { @Autowired ResourceLoader resourceLoader; @Override public void run(ApplicationArguments args) throws Exception { Resource resource = resourceLo..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 13. 11:45
| 스프링 ApplicationEventPublisher 스프링 ApplicationEventPublisher는 스프링에서 이벤트 프로그래밍에 필요한 인터페이스를 제공한다. ApplicationContext 인터페이스에 이미 상속되어있어서 ApplicationContext의 구현체에서도 접근이 가능하다.@Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext applicationContext; // ApplicationEventPublisher를 사용해도 된다. @Override public void run(ApplicationArguments args) throws Exception { ap..
Spring/Spring 입문 - 개념 및 핵심 새로비 2018. 12. 12. 21:38
| 스프링 메세지소스(Spring MessageSource) 스프링 메세지 소스(Spring MeesageSource)는 국제화(i18n)을 제공하는 인터페이스다. 메세지 설정 파일을 모아놓고 각 국가마다 로컬라이징을 함으로서 쉽게 각 지역에 맞춘 메세지를 제공할 수 있다. | 메세지 설정 파일 셋업하기 메세지 설정 파일을 셋업하기 위해서는 .properties 확장자가 붙은 프로퍼티 파일에 [파일이름]_[언어]_[국가].properties 형식으로 메세지 파일을 추가해야 한다. 다음은 그 예시다. message.properties : 기본 메시지. 시스템의 언어 및 지역에 맞는 프로퍼티 파일이 존재하지 않을 경우에 사용. message_en.properties : 영어 메시지. message_ko.pr..