DevLogs/LearningSpring 5

JavaConfig 클래스에서의 Bean 취득 방법에 대한 정리

JavaConfig 클래스란?@Configuration을 붙인 클래스를 말함 Bean 취득 방법1. 인수 주입@Configurationpublic class UserServiceConfig { @Bean public UserService userService(UserRepository repository) { // (1) return new SimpleUserService(repository); }}(1)에서와 같이, UserRepository 타입의 객체를 인수로 받도록 @Bean 메서드를 정의한다.그러면, DI 컨테이너가 해당하는 객체를 인수로 주입해 준다.만약, DI 컨테이너에 해당 타입의 객체가 없다면, 에러가 발생하므로 null을 주입받을 염려는 하지 않아도 된다.2. ..

Spring의 *Aware 인터페이스들에 대한 정리

개요XyzAware 인터페이스는 setXyz(Xyz) 메서드를 가지는 규약이 있어 보인다.메서드를 구현하면, IoC 컨테이너에 의해 콜백 호출된다.종류와 메서드ApplicationContextAware메서드: setApplicationContext(ApplicationContext applicationContext)ApplicationEventPublisherAware메서드: setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)BeanClassLoaderAware메서드: setBeanClassLoader(ClassLoader classLoader)BeanFactoryAware메서드: setBeanFactory(..

MessageSource의 한글 깨짐 해결하기

아래 코드와 같이, messageSource 빈을 ResourceBundleMessageSource로 생성하면, message.properties 파일에 기재한 한글이 깨지는 경우가 발생하는데, 이는 인코딩 문제일 가능성이 거의 99%다.@Beanpublic MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("messages"); return messageSource;} IntelliJ를 사용하는 경우라면, 다음과 같이 설정하면 해결된다.Editor > File Encodings 진입 후, Tra..

Spring AOP Introduction 기능을 활용하여 Mixin을 구현해 보자

1. 우선, Robot 타입의 bean을 정의한다.@Componentpublic class Robot { public void performTask() { System.out.println("Performing a task."); }}  2. Robot 타입의 bean의 기능을 추가할 인터페이스들과 구현 클래스 하나씩을 정의한다.public interface Flyable { void fly();}public class FakeFlyable implements Flyable { @Override public void fly() { System.out.println("Flying high in the sky!"); }}public interface ..

@Value 어노테이션에 SpEL 사용법

0. 용어SpEL : Spring Expression Language 1. @Value("${...}")1.1. 프로퍼티 파일에 정의된 값 주입application.properties 파일에 app.name으로 정의된 문자열을 주입할 수 있다.파일에 정의가 없을 경우에 대한 기본값을 제공할 수 있다.@Value("${app.verion:1.0}")private String appVersion; 1.2. 환경 변수 값 주입환경 변수로 정의된 값을 주입할 수 있다.@Value("${JAVA_HOME}")private String javaHome; 2. @Value("#{...}")2.1. bean 주입"myBean" 으로 명명된 bean을 주입할 수 있다.@Value("#{myBean}")private My..