전체 글
-
Validation추상화SPRING/스프링프레임워크 핵심개념 2021. 5. 19. 15:20
스프링에서 애플리케이션에서 사용하는 객체들을 검증용 Interface를 제공한다. -> 모든 계층 (웹, 데이터, 서비스)에서 사용 가능 하다. -> Validation은 DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. Validator Interface를 구현하는 Class는 두 가지 Method를 구현해서 사용한다. 1. supports : parameter로 받은 Instance의 클래스를 검증 2. validate : 실질적인 Validation이 이루어지는 Method import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.spring..
-
Resource 추상화SPRING/스프링프레임워크 핵심개념 2021. 5. 18. 22:11
Resource 추상화 - java.net.URL을 추상화한 것 - 스프링 내부에서 많이 사용 추상화를 한 이유 - 클래스패스 기준으로 리소스 읽어오는 기능 부재 - ServletContext를 기준으로 상대 경로로 읽어오는 기능 부재 - 새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족 Resource 인터페이스를 구현한 구현체들의 목록 UrlResource URL을 기준으로 리소스를 읽어들임 지원하는 프로토콜 http, https, ftp, file, jar ClassPathResource 클래스패스를 기준으로 리소스를 읽어드림. classapth: FileSystemResource 파일시스템을 기준으로 리소스를 읽어드림. ServletC..
-
ResourceLoaderSPRING/스프링프레임워크 핵심개념 2021. 5. 17. 00:29
Resource를 로딩하는 인터페이스를 ApplicationContext가 상속받아 구현되었다. 그렇기 때문에 ResourceLoader 대신 ApplicationContext를 @autowired 하여 사용할 수도 있다. @Component public class AppRunner implements ApplicationRunner { @Autowired ResourceLoader resourceLoader; @Override public void run(ApplicationArguments args) throws Exception { Resource resource = resourceLoader.getResource("classpath:text.txt"); System.out.println(resou..
-
ApplicationEventPublisherSPRING/스프링프레임워크 핵심개념 2021. 5. 16. 23:31
- ApplicationPublisher는 이벤트 프로그래밍에 필요한 인터페이스를 제공한다. - ApplicationContext는 ApplicationEventPublisher를 상속한다. Event class // Spring 4.2 버전 이후 부터는 ApplicationEvent 상속 필요 X public class MyEvent extends ApplicationEvent { private int data; public MyEvent(Object source) { super(source); } public MyEvent(Object source, int data) { super(source); this.data = data; } public int getData() { return data; } ..
-
MessageSource - 다국어SPRING/스프링프레임워크 핵심개념 2021. 5. 16. 00:07
MessageSource는 다국어를 제공하는 기능이다. 또한 ApplicationContext는 MessageSource를 상속 받고 있기 때문에 ApplicationContext를 사용할 수도 있다. 아래와 같이 messages.properties를 생성하여 사용한다. /resources/messages.properties greeting= Hello!! {0} /resources/messages_ko_KR.properties greeting= 안녕!!, {0} @Component public class AppRunner implements ApplicationRunner { @Autowired MessageSource messageSource; @Override public void run(Appli..
-
Environment - 프로퍼티SPRING/스프링프레임워크 핵심개념 2021. 5. 14. 00:50
Spring에서는 key-value 형태의 Properties를 등록하고 접근할 수 있는 기능이 존재한다. 다양한 방법으로 property 설정을 할 수 있으며, environment를 이용하여 Property 값을 가져올 수 있다. @Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext ctx; @Autowired BookRepository bookRepository; @Override public void run(ApplicationArguments args) throws Exception { Environment environment = ctx.getEnvironment(); Syste..
-
Environment - 프로파일SPRING/스프링프레임워크 핵심개념 2021. 5. 14. 00:02
Environment : Application 환경을 나타내는 Interface로 Profile과 Property가 있다. 프로파일 profile은 Bean들의 그룹이라고 할 수있다. 각기 다른 환경에 따라 다른 Bean들을 사용해야 하는 경우에 프로파일을 사용하면 유용하다. ex : Test 환경, 배포 환경에 따라 다른 빈들을 사용해야 하는 경우 @Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext ctx; @Autowired BookRepository bookRepository; @Override public void run(ApplicationArguments args) throws..
-
Bean의 스코프SPRING/스프링프레임워크 핵심개념 2021. 5. 13. 00:16
Singleton Scope : 하나의 인스턴스를 사용하는 Scope @Component public class Single { @Autowired Proto proto; public Proto getProto() { return proto; } } @Component public class Proto { } @Component public class AppRunner implements ApplicationRunner { @Autowired Single single; @Autowired Proto proto; @Override public void run(ApplicationArguments args) throws Exception { System.out.println("proto"); System.o..