2020/03

1. How was the party last night? 단어 lately : 최근에 how was ~? : ~ 어땠어요? show up : 나타나다. right : 좋은, 괜찮은, 올바른 be worth : 보람이 있다. 문맥속에서 사용 I'm all right : 좋아요 How was the party last night? : 어제 파티는 어땠어요? Not may people showed up : 사람들이 많이 나오지 않았거든요. I've been pretty busy lately : 최근에 좀 바빴어요. Dialogue A : Hey, how was the party last night? B : It was okay, Not many people showed up. A : How a..
Aspect-oriented Programming(AOP)는 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 흩어진 관심사 (Crosscutting Concerns) AOP를 적용하게 되면? 비즈니스로직이 아닌 공통적이고 반복적인 코드를 처리하기 위한 방법으로 Aspect X, Y, Z를 횡단 관심사(cross-concern)라고도 한다. Logging, Security, Transaction을 Aspect라고 보면 된다. (공통 관심사에 대한 추상적인 명칭) AOP 주요 개념 Aspect와 Target Advice Join point와 Pointcut AOP 구현체 자바 AspectJ 스프링 AOP AOP 적용 방법 컴파일 ⇒ 클래스 로드시, 부하가 생길 수 있음 ..
스프링 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) 문법 #{"표현식"} ${"프로퍼티"} 표현식은 프로퍼티를 가질 수 있지만, 반..
2020/03/25 - [프로그래밍 노트/SPRING] - [Spring] 데이터 바인딩 - PropertyEditor Converter S타입을 T타입으로 변환할 수 있는 매우 일반적인 변환기 상태 정보 없음 == Stateless == 쓰레드 세이프 ConverterRegistry에 등록해서 사용 public class EventConverter { // Converter 인터페이스를 구현 (Source -> Target 변환) public static class StringToEventConverter implements Converter { @Override public Event convert(String str) { return new Event(Integer.parseInt(str)); } ..
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[..
요즘 트렌드는 프론트/백엔드의 분리이다. 그러다보니 사용자에게 페이지를 제공할 때, 서버렌더링 방식이아닌 클라이언트 렌더링(브라우저에서 화면을 그림)방식을 많이 사용하게 된다. 나는 백엔드 개발자이긴 하지만, 프론트개발관련해서 웹애플리케이션이 브라우저에서 어떻게 동작하고 최적화 방법에 대해 공부가 필요해서 해당 내용을 정리하게 되었다. 참고한 책은 https://book.naver.com/bookdb/book_detail.nhn?bid=4587095 (웹 사이트 최적화 기법) 이며, 필요하다고 생각한 내용들만 적을 생각이다! 현실적으로 대부분의 웹 페이지는 최종 사용자의 반응 시간(브라우저 반응 시간) 중 HTML문서를 웹 서버로부터 다운로드 받는 데 소요되는 시간이 10~20%도 채 되지 않는다. ⇒ ..
ApplicationContext는 프로파일과 프로퍼티를 다루는 EnvironmentCapable을 구현하여 사용한다. ApplicationContext extends EnvironmentCapable ... getEnvironment() 프로파일은 빈들의 그룹이라고 생각하면 된다. Environment의 역할은 활성화할 프로파일을 확인 및 설정. 만약에 테스트시에만 필요한 빈들이 있다면 프프로파일(테스트)을 정의하여, 사용하면 된다. 프로파일 정의하기 // 이 자바 config는 Test할때 사용할 꺼야. // Test할때는 TestBookRepository가 필요하거든... @Configuration @Profile("test") public class TestConfiguration { @Bean ..
깡냉쓰
'2020/03 글 목록