Spring

스프링 EL 이란? 객체 그래프를 조회하고 조작하는 기능을 제공한다. Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다. 스프링 3.0부터 지원 SpEL 구성 ExpressionParser parser = new SpelExpressionParser() StandardEvaluationContext context = new StandardEvaluationContext(bean) Expression expression = parser.parseExpression("SpEL 표현식"); String value = expression.getValue(context, String.class) 문법 #{"표현식"} ${"프로퍼티"} 표현식은 프로퍼티를 가질 수 있지만, 반..
org.springframework.validation.DataBinder 기술적인 관점 : 프로퍼티 값을 타겟 객체에 설정하는 기능 사용자 관점 : 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 입력값은 대부분 "문자열"인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Block 같은 도메인 타입으로도 변환해서 넣어주는 기능 PropertyEditor 스프링 3.0 이전까지 DataBinder가 변환 작업 사용하던 인터페이스 쓰레드-세이프 하지 않음(상태 정보 저장 하고 있음, 따라서 싱글톤 빈으로 등록해서 쓰면... gg) Object와 String간의 변환만 할 수 있어, 사용 범위가 제한적 임 고전적인 데이터 바인딩 ..
org.springframework.validation.Validator 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떠한 계층과도 관계가 없다 ⇒ 모든 계층(웹, 서비스, 데이터)에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation1.1)을 지원한다. (LocalValidatorFactoryBean) DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 boolean support(Class clazz) : 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함 void validate(Object obj, Error e) : 실제 검증 로직을 이 안에서 구현 구현할 때 Validation..
ResourceLoader 리소스를 읽어오는 기능을 제공하는 인터페이스로, applicationContext가 상속받고 있다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { ... } public interface ResourcePatternResolver extends ResourceLoader { String CLASSPATH_ALL_URL_PREFIX = "classpath*:"; Resource[] getResources(Stri..
MessageSource란 국제화(i18n)기능을 제공하는 인터페이스이다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { ... } ApplicationContext가 MessageSource를 구현한 것을 볼 수 있다. 즉, ApplicationContext는 MessageSource기능을 사용할 수 있다. ApplicacionContext extends MessageSource getMessage(String code, Object[..
ApplicationContext는 프로파일과 프로퍼티를 다루는 EnvironmentCapable을 구현하여 사용한다. ApplicationContext extends EnvironmentCapable ... getEnvironment() 프로파일은 빈들의 그룹이라고 생각하면 된다. Environment의 역할은 활성화할 프로파일을 확인 및 설정. 만약에 테스트시에만 필요한 빈들이 있다면 프프로파일(테스트)을 정의하여, 사용하면 된다. 프로파일 정의하기 // 이 자바 config는 Test할때 사용할 꺼야. // Test할때는 TestBookRepository가 필요하거든... @Configuration @Profile("test") public class TestConfiguration { @Bean ..
PropertyEditor의 여러가지 장점에도 불구하고, PropertyEditor는 매번 바인딩을 할 때마다 새로운 오브젝트를 만들어야 한다는 약점이 있다. 그래서 스프링 3.0에는 PropertyEditor를 대신할 수 있는 새로운 타입 변환 API가 도입됐다. 바로 Converter 인터페이스다. Converter는 PropertyEditor와 다르게 변환과정에서 메소드가 한 번만 호출된다. ⇒ 변환 작업 중 상태를 인스턴스 변수로 저장하지 않음 (멀티스레드 환경에서 안전) Converter Converter는 소스 타입에서 타깃 타입으로의 단방향 변환만 지원한다. (PropertyEditor는 양방향 지원) 물론 소스 타입과 타깃 타입을 바꿔서 컨버터를 하나 더 만들면 양방향 변환이 가능해 진다...
JavaConfig 설정하기 Spring JavaConfig의 장점 주입(Injection), 상속, 다형성 등의 기능을 수행할 수 있다. 빈에 대한 생성과 초기화에 대한 모든 권한을 가진다. IDE같은 개발 도구의 도움 없이도 손쉽게 리팩토링 가능 컨테이너 초기화 시 큰 비용이 드는 클래스 패스 스캐닝(Classpath Scanning)을 줄일 수 있다. --> ?? 필요에 따라 XML 또는 Property 등을 사용할 수 있다. 애플리케이션 구조 Controller - Service - DAO Controller - 사용자의 요청을 처리 Service - 비즈니스 로직 DAO - 데이터를 처리 Controller, View -> 표현 계층(Presentation Layer) Service -> 비즈니..
프로젝트 준비 pom.xml 설정 스프링을 손쉽게 테스트할 수 있도록 spring-test를 추가한다. 스프링은 기본적으로 JCL을 사용하는데, 이 프로젝트는 SLF4J를 사용하므로 commons-logging 라이브러리를 exclusions 시킨다. org.springframework spring-test ${version.spring} test commons-logging commons-logging library 설정 spring-webmvc(core, beans, aop, context), slf4j, junit 추가 Servlet API도 추가한다. 실제 실행할 때는 서블릿 컨테이너가 Servlet API를 제공하지만, 컴파일할 때 라이브러리가 필요하므로 추가해야 한다. (의존범위 : provi..
알게된 것Spring의 bean 객체는 GarbageColecor 대상이 될까?Spring이 관리하는 bean은 스프링 컨테이너가 시작될 때 생성되고 스프링 컨테이너가 중지될 때 삭제가 됨Spring 싱글톤 객체가 단순한 Java 객체와 다른 이유는 컨테이너가 해당 객체에 대한 참조를 유지하며 언제든지 코드 아무곳에서나 사용할 수 있기 때문임즉, Spring Container가 bean을 잡고 있기 때문에 GC의 대상이 안되며, Spring Container가 중지되어야지만 삭제됨When is a Spring Singleton bean garbage collected?=> 대상 ㄴㄴ, The reason is spring containers always maintains a reference to it ..
깡냉쓰
'Spring' 태그의 글 목록 (2 Page)