Programing/Spring FrameWork (9) 썸네일형 리스트형 [Spring] ApplicationContext - MessageSource [Spring] ApplicationContext - MessageSource MessageSource SpringBoot를 사용한다면 별다른 설정 필요없이 messages.properties를 사용할 수 있다. messages.properties messages_ko_kr.properties Reload 기능이 있는 MessageSource 사용 @Bean public MessageSource messageSource() { var messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:/messages"); messageSource.setDefaultEncoding("UTF-8");.. [Spring] EnvironmentCapable - profile [Spring] EnvironmentCapable - profile profile - 빈들의 묶음(그룹) ApplicationContext가 상속받는 인터페이스들 중 EnvironmentCapable 인터페이스는 profile 기능을 제공한다. UseCase 1) 테스트 환경에서는 A라는 Bean을 사용하고, 배포 환경에서는 B라는 Bean을 사용하고 싶을때 2) 테스트 환경에서는 필요가 없고 배포할 때만 등록이 되면 되는 Bean의 경우 profile 정의 방법 1) @Configuration 클래스에 정의 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuratio.. [Spring] Bean의 Scope ( 싱글톤 vs 프로토타입 ) [Spring] Bean의 Scope ( 싱글톤 vs 프로토타입 ) Scope: Bean Object가 생성되어 존재할 수 있는 범위 1. 싱글톤(Singleton) Scope 아무런 설정을 하지 않으면 기본적으로 싱글톤 Scope를 가지며, Property가 공유된다. DI DL 시 매번 같은 Object가 사용된다. 싱글톤 Scope를 가지는 Bean이 많아지면 어플리케이션 구동 시 등록될 Bean의 수가 많아짐으로 구동속도가 느려지게 된다. 등록방법 -> @Component Annotation 사용 시, 기본적으로 싱글톤 Scope을 가지는 Bean으로 등록된다. 2. 프로토타입(Prototype) Scope 싱글톤 Scope과 달리 DI DL 시 매번 새로운 Object가 사용된다. 등록방법 ->.. [Spring] 해당 타입의 빈이 여러개인 경우 [Spring] 해당 타입의 빈이 여러개인 경우 Field bookRepository in me.whiteship.demospring51.BookService required a single bean, but 2 were found: - myBookRepository: defined in file [/Users/youngjin/workspace/demospring51/target/classes/me/whiteship/demospring51/MyBookRepository.class] - youngjinBookRepository: defined in file [/Users/youngjin/workspace/demospring51/target/classes/me/whiteship/demospring51/You.. [Spring] Bean 주입방법 비교(xml vs Java) [Spring] Bean 주입방법 비교(xml vs Java) ApplicationContext 1) xml ( ClassPathXmlApplicationContext ) -> XML 파일에 Bean을 각각 등록하는 방법 -> property를 활용하여 의존관계 주입 2) Java ( AnnotationConfigApplicationContext ) -> Annotation을 활용하여 Bean을 등록하는 방법 -> Autowired 어노테이션을 활용하여 의존관계 주입 * SpringBoot에서는 @SpringBootApplication 어노테이션을 사용. 1) xml파일로 Bean 주입하기(고전방법) application.xml // bookService Bean 등록 -> bookRepository의 .. [Spring] PSA ( Portable Service Abstraction ) [Spring] PSA ( Portable Service Abstraction ) PSA: 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조 Spring은 서블릿 기반으로 작동함에도 불구하고 서블릿 코드로 작성하지 않아도 된다. 우리가 사용할 땐, 단지 @Controller, @GetMapping, @PostMapping 등 여러 애노테이션을 붙혀 사용한다. 이렇게 작성된 Spring 코드는 내부적으로 서블릿으로 변경되어 동작하지만 서블릿 기술은 추상화 계층에 의해 숨겨지게 된다. 이렇게 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것을 Service Abstraction이라 한다. // 추후 추가 예정 [Spring] AOP ( Aspect Oriented Programming ) [Spring] AOP ( Aspect Oriented Programming ) Spring AOP ( Aspect Oriented Programming ) 관점 지향 프로그래밍 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 각각 모듈화하는 것 흩어진 관심사 ( Crosscutting Concerns ): 소스 코드 상에서 다른 부분에 계속 반복해서 쓰는 코드들 취지: 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하는 것 -> 관점 지향 프로그래밍 -> 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나느어서 보고 그 관점을 각각 모듈화하겠다는 것 다양한 AOP 구현 방법 컴파일 A.java -> (AOP) -> A.class.. [Spring] 빈 ( Bean ) [Spring] 빈 ( Bean ) 빈 ( Bean ) -> 스프링 IoC 컨테이너가 관리하는 객체 -> applicationContext가 만들어서 그 안에 담고 있는 객체 // Bean이 아니다 OwnerController ownerController = new OwnerController(); // Bean이다. OwnerController ownerController = applicationContext.getBean( OwnerController.class ); Bean 등록 방법 -> 1) Component Scanning( Annotation )을 통한 방법 @ComponentScan: 어디서부터 Component를 찾을지 나타내는 Annotation @Component @Repository.. 이전 1 2 다음