spring
-
내장 웹 서버와 응용 (스프링 부트 원리 - 2)Programming/Spring Boot 2020. 3. 8. 20:29
1. 내장 웹 서버 이해 Spring Boot는 서버가 아니다! 내장 Servlet 컨테이너(톰켓)를 쉽게 사용해 줄 수 있는 툴! 톰켓, 제티, 네티, 언더토우 등이 서버임 톰켓이 만들어지고 실행되는 것도 자동 설정의 일부임 (서블릿 컨테이너를 만들고 서블릿을 등록하는 일이 나누어져 실행됨) 2. 컨테이너와 서버 포트 -다른 서블릿 컨테이너(제티)로 변경 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty - 프로퍼티 설정으로 웹 서버 사용 유무, 포트 변경가능(server.port) ..
-
Null-Safety (스프링 핵심 기술 - 6)Programming/Spring Framework 주요 개념 2020. 3. 5. 18:58
컴파일 전에 사전에 널 포인트 exception을 방지하기 위함 - @NonNull - @Nullable - @NonNullApi (패키지 레벨 설정) - @NonNullFields (패키지 레벨 설정) public class Example { @NonNull public String createName(@NonNull String name){ return "Hello " + name; } } 인프런 백기선님 '스프링 프레임워크 핵심 기술' 강의를 듣고 정리한 내용입니다.
-
스프링 AOP (스프링 핵심 기술 - 5)Programming/Spring Framework 주요 개념 2020. 3. 5. 00:43
1. AOP (Aspect-Oriented Programming) 이란? - OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 - 흩어진 관심사들을 하나로 모아서 Aspect로 모듈화하는 기법 2. 주요 개념 - Aspect : 모듈 - Target : 적용되는 대상 (Class A, B) - Advice : 해야할 일 - Join Point : 합류 지점 (생성자 호출 전, 메소드를 호출하기 전, 필드에서 값을 가져갈 때...) - Pointcut : 어디에 적용되어야 하는지 3. 구현체 - AspectJ (다양한 Join Point를 사용해야 할 때) - 스프링 AOP - 둘을 연동해서 사용 가능 3. 적용 방법 - 컴파일 타임 : 컴파일 할 때, 조작된 자바 바이..
-
SpEL(Spring Expression Language) (스프링 핵심 기술 - 4)Programming/Spring Framework 주요 개념 2020. 3. 5. 00:01
1. SpEL 이란? - 객체 그래프를 조회하고 조작하는 기능을 제공한다 - #{"표현식"} - ${"프로퍼티"} - 표현식 안에 프로퍼티 사용이 가능 2. 실제로 어디에서 쓰이는지? - @Value 어노테이션 - @ConditionOnExpression 어노테이션 - 스프링 시큐리티 - 스프링 데이터 - Thymeleaf 3. 예제 @Component public class AppRunner implements ApplicationRunner { @Value("#{1 + 1}") int value; @Value("#{'hello ' + 'hongchan'}") String name; @Value("#{1 eq 1}") boolean bool; @Value("Hello") String str; @Valu..
-
데이터 바인딩 추상화 (스프링 핵심 기술 - 3)Programming/Spring Framework 주요 개념 2020. 3. 4. 23:17
데이터 바인딩이란? - 기술적인 관점 : 프로퍼티 값을 타겟 객체에 설정하는 기능 - 사용자 관점 : 사용자 입력 값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 즉, 입력 값은 대부분 '문자열'인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Book 같은 도메인 타입으로도 변환해서 넣어주는 기능 1. PropertyEditor - getValue, setValue 에서의 Value는 Property가 가지고 있는 값인데, 서로 다른 쓰레드에게 공유됨 (상태정보를 저장하고 있음, Thread Safe 하지 않음) 따라서, PropertyEditor의 구현체들은 여러 스레드에 공유해서 사용하면 안됨. (빈으로 등록해서 사용하면 안됨) -..
-
Resource / Validation (스프링 핵심 기술 - 2)Programming/Spring Framework 주요 개념 2020. 3. 4. 18:38
이전 포스트 정리 ApplicationContext는 BeanFactory 기능 뿐만 아니라 다양한 기능이 있음 (이벤트 퍼블리셔, 리소스 로더, 메시지...) 1. Resource 추상화 - java.net.URL을 추상화 한 것 - 스프링 내부에서 많이 사용하는 인터페이스 추상화 한 이유 - 클래스패스 기준으로 리소스를 읽어오는 기능 부재 (이 기능 많이 사용함) - ServletContext를 기준으로 상대 경로로 읽어오는 기능 부재 - 위의 기능 부재로, 새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족함 구현체 - UrlResource : 기본적으로 지원하는 프토토콜 http, https, file, jar.. - ClassPathR..
-
스프링 IoC 컨테이너와 빈 (스프링 핵심 기술 - 1)Programming/Spring Framework 주요 개념 2020. 3. 4. 01:16
1. 스프링 프레임워크의 디자인 철학 - 모든 선택은 개발자의 몫 (특정 기술을 강요하지 않음) - 다양한 관점을 지향한다 (유연성) - 하위 호환성을 지킨다 (노력) - API를 신중하게 설계한다 (공들인다) - 높은 수준의 코드를 지향한다 2. IoC (Inversion of Control) - 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 것이 아니라, 주입 받아 사용하는 방법을 말한다. - 가장 핵심이되는 최상위 인터페이스는 BeanFactory. 이의 하위 인터페이스는 ApplicationContext (BeanFactory + 다양한 기능이 추가됨) 3. 빈(Bean) - IoC 컨테이너가 관리하는 객체 - 빈으로 ..