Spring Framework/Spring Core: 70개의 글
[Spring] 스프링 빈(Bean)이 초기화, 소멸 시 특정 작업을 하는 방법 방법 1: InitializingBean, DisposableBean 인터페이스 구현 방법 2: 스프링 XML 설정 사용 1. 인터페이스 구현 Spring에서 제공하는 InitializingBean, DisposableBean 인터페이스를 구현한다. public class BookDao implements InitializingBean, DisposableBean { @Override public void afterPropertiesSet() throws Exception { // 빈 초기화 시 코드 구현 } @Override public void destroy() throws Exception { // 빈 소멸 시 코드 구..
[Spring] 의존성 주입 애노테이션 정리 - @Autowired, @Resource, @Inject 1. @Autowired @Autowired는 주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입한다. @Autowired는 필드, 생성자, Setter에 붙일 수 있다. 단, @Autowired를 필드, Setter에 붙여서 사용할 경우 반드시 기본 생성자가 정의되어 있어야 한다. 1) @Autowired - 필드 주입 public class WordRegisterServiceUseAutowired { @Autowired private WordDao wordDao; public WordRegisterServiceUseAutowired() { } } 2) @Autowired - 생성자 주입 p..
[Spring] 스프링 XML 설정 파일 작성 방법 정리 📄 목차 1. 스프링 XML 설정 파일 포맷 - 기본 포맷 - 애노테이션 설정을 사용하기 위한 포맷 2. 빈(Bean) 설정 예시 - 자동 주입 설정 - autowire 속성 3. DI(Dependency Injection) 설정 - 생성자 주입 - 프로퍼티 주입 - 프로퍼티 주입 - List 타입 - 프로퍼티 주입 - Set 타입 - 프로퍼티 주입 - Map 타입 - 프로퍼티 주입 - Properties 타입 4. ApplicationContext 객체 생성 - 스프링 XML 설정 파일이 한 개인 경우 - 스프링 XML 설정 파일이 여러 개인 경우 - 스프링 XML 설정 파일이 여러 개인 경우(import 태그 사용) 1. 스프링 XML 설정 파..
Servlet에서 스프링 ApplicationContext 사용하기 pom.xml org.springframework spring-webmvc 5.1.3.RELEASE 스프링 ApplicationContext, 즉 스프링 IoC를 사용하려면 관련 의존성을 추가해야 한다. spring-context 라이브러리를 가져올 수 있도록 의존성을 추가한다. 위 예제에서는 spring-webmvc를 가져오도록 했지만 spring-context만 가져와도 된다. web.xml org.springframework.web.context.ContextLoaderListener contextClass org.springframework.web.context.support.AnnotationConfigWebApplication..
[Spring] SpEL - Spring Expression Language SpEL(Spring Expression Language)란? Spring expression language는 보통 SpEL로 표기하며 구두로는 스프링 EL이라고 지칭한다. SpEL은 보통 객체를 조회하고 조작하는 기능을 제공하여 Unified EL과 유사하지만 메소드 호출, 문자열 템플릿 기능 등의 여러가지 추가 기능을 제공하는 표현식 언어이다. OGNL, MVEL, JBoss EL 등 자바에서 사용가능한 여러 EL이 있지만 SpEL은 Spring 프로젝트 전반에 걸쳐 사용하기 위해 만들어졌으며 스프링 3.0부터 지원된다. SpEL 표기법 #{ SpEL표현식 } JSP에서 EL을 사용해서 객체의 프로퍼티를 꺼낼때 ${ } 이..
[Spring] 데이터 바인딩 - PropertyEditor, Converter 그리고 Formatter 1. Data Binding(데이터 바인딩)의 정의 📝 데이터 바인딩 웹에서 사용자가 입력하여 전달되는 값은 주로 문자열이며, 웹 어플리케이션에서는 이 문자열을 도메인 객체의 프로퍼티 타입(int, date, boolean, ... 또는 도메인 객체 타입 그 자체)으로 변환이 필요하다. 이렇게 사용자가 입력한 문자열 값을 프로퍼티 타입에 맞춰 변환하여 할당하는 것을 데이터 바인딩이라 한다. 2. Spring의 데이터 바인딩 Spring은 데이터 바인딩 기능을 여러 인터페이스로 추상화하여 제공한다. 데이터 바인딩 인터페이스는 주로 웹 MVC에서 사용하지만 web에 국한되어 특화된 기능이 아니라 여러 곳..
[Spring] Validation 추상화 org.springframework.validation.Validator는 spring에서 제공하는 객체 검증용 인터페이스이다. 주로 spring mvc에서 사용하지만 web 계층 전용 개념은 아니며 일반적으로 사용될 수 있다. Validator는 Java EE 표준 스펙 중 하나인 Bean Validation을 지원하여 Bean Validation이 제공하는 여러 애노테이션들을 사용해서 객체 데이터를 검증할 수 있다. 1. Validator 인터페이스 Validator 인터페이스에는 두 가지 메소드가 정의되어있다. boolean supports(Class clazz) { // 인스턴스가 검증 대상 타입인지 확인 } void validate(Object targ..
[Spring] Resource 추상화 Spring은 java.net.URL을 org.springframework.core.io.Resource로 감싸서 추상화한 클래스를 제공한다. 어플리케이션에서 사용하는 리소스 자체를 추상화 한것인데 spring에서 이를 추상화한 이유는 다음과 같다. java.net.URL은 http, https, ftp는 지원하지만 classpath를 기준으로 리소스를 가져오는 기능이 없다. ServletContext를 기준으로 상대 경로로 리소스를 가져오는 기능이 없다. 새로운 핸들러를 등록하여 URL 접미사를 만들어 사용할수는 있지만 구현이 복잡하고 편의성 메소드가 부족하다. Spring은 리소스를 추상화하여 리소스를 다루는데 있어 하나의 통일된 인터페이스를 제공한다. 1. S..
[Spring] ResourceLoader로 텍스트 파일 출력하기 (Java 11) Spring의 ApplicationContext는 ResourceLoader라는 인터페이스를 상속한다. 이 인터페이스는 이름에서부터 알 수 있듯 리소스를 읽어오는 기능을 제공한다. 1. Resource 객체 얻기 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.io.Resource; import org.springfr..
[Spring] ApplicationEventPublisher를 이용한 이벤트 프로그래밍 ApplicationEventPublisher는 Spring의 ApplicationContext가 상속하는 인터페이스 중 하나이다. 옵저버 패턴의 구현체로 이벤트 프로그래밍에 필요한 기능을 제공해준다. 1. ApplicationEvent를 상속하는 이벤트 클래스 만들기 import org.springframework.context.ApplicationEvent; public class MyEvent extends ApplicationEvent { private int data; public MyEvent(Object source) { super(source); } public MyEvent(Object source,..