Spring: 202개의 글
오늘 알아볼 내용은 아직 릴리즈는 되지 않았지만 조만간 릴리즈될 Spring boot 2.0의 대해서 알아볼 예정이다. 아직 릴리즈전이라 바뀔 가능성이 있어 깊게는 살펴보지 않을 것이다. 또한 혹시나 기존(이전버전)과 동일한 기능을 마치 신기능처럼 이야기하거나 틀린이야기를 할 경우에는 피드백을 주길 바란다. 필자가 Spring boot를 좋아하는 이유중 하나도 Configuration Binding을 아주 손쉽게 해주기 때문이다. 하지만 기존의 버전과 2.0의 버전이 조금 달라졌다. 오늘은 그 내용을 살펴볼 예정이다. ConfigurationProperties prefix ConfigurationProperties 어노테이션은 아주 손쉽게 properties를 바인딩 해준다. 기존에는 underscore..
Interceptor 브라우저 - DS - Interceptor - Control - dispatcher servelt과 controller 사이에 존재하여 요청을 가로챈다 - 모든 페이지마다 동일한 기능의 제어가 가능 인터셉터를 통해 할 수 있는 대표적 3가지 1 처리시간 체크 ( DB에 넣어 통계를 넣는다) 2 인증 체크 3 인가 체크를 할 수 있따. 1. 웹 요청 처리 시간을 처리하는 Interceptor 만들기 step1. MeasuringInterceptor.java public class MeasuringInterceptor extends HandlerInterceptorAdapter{ @Override public boolean preHandle(HttpServletRequest re..
1. AOP란? Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다. 서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다. 2. AOP 용어 조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다. 포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트..
Pom.xml을 통해 관련 의존성을 추가하고 root-context.xml, servlet-context.xml 파일 설정을 통해 JPA와 스프링프레임워크를 연동합니다. 이어서 컨트롤러, 서비스, 도메인, 레파지토리 단위로 나눠 스프링프레임워크 애플리케이션을 개발합니다. pom.xml 의존성을 추가해 줍니다. 4.0.0 jpabook ch11-jpa-shop 1.0-SNAPSHOT jpa-shop war 1.6 UTF-8 UTF-8 4.1.6.RELEASE 4.3.10.Final 7.0.57 1.4.187 2.2 1.2 3.0.1 1.1.1 1.7.6 4.12 org.springframework spring-webmvc ${spring-framework.version} o..
1.5 Spring5 Reactive 이번챕터에서 다룰 Spring Reactive는 제가 실무에서는 다루어보지 못한 기술입니다. 하지만 Spring5가 나오면서 가장 열정적으로 소개하고있는 기술이기에 정리를 해보려고 합니다. Spring에서는 “Reactive”라는 단어를 다음과 같이 정의하고 있습니다. The term, “reactive,” refers to programming models that are built around reacting to change — network components reacting to I/O events, UI controllers reacting to mouse events, and others. In that sense, non-blocking is react..
Spring Annotation인 @Component와 @Bean의 차이에 대해 알아보자. 차이점 @Bean public ObjectMapper objectMapper(){ return new ObjectMapper(); } @Component public class CustomMapper{ ... } @Bean의 경우 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용된다. 예를 들면 ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할 수 없으니 ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언하여 Bean으로 등록한다. 반면 개발자가 직접 컨트롤이 가능한 Class들의 경우엔 @Co..
Spring Data 란? Spring Data’s mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of the underlying data store. It makes it easy to use data access technologies, relational and non-relational databases, map-reduce frameworks, and cloud-based data services. This is an umbrella project which contains many subprojec..
오늘은 코틀린의 함수 정의와 호출에 대해 다루어 본다. 컬렉션 객체 만들기 fun createHashSet() = hashSetOf(1, 7, 53) fun createArrayList() = arrayListOf(1, 7, 53) fun createHashMap() = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") 기본적으로 코틀린은 컬렉션을 만드는 함수를 기본 라이브러리에 내장이 되어 있다. 또한 마지막에 hashMap을 만드는 함수 안에 "to"라는 키워드가 있는데, 사실 키워드가 아니고 일반 함수이다. 이점은 뒤에서 자세히 설명한다. 또한 생성하는 컬렉션 객체는 코틀린만의 컬렉션 객체가 아니고, 자바의 컬렉션 객체를 생성한다. 하지만 자바에서..
오늘은 코틀린에 대해 아주 기초를 다루어본다. 함수(Function) 코틀린에서 함수는 "fun"이라는 키워드로 정의한다. 간단하게 리턴값이 있고, 없는 함수와 바디 내용이 식으로만 이루어졌을때 함수를 간략화 하는 방법은 아래와 같다. /** * 리턴이 없는 함수 */ fun helloWorld() { println("hello, world") } /** * 리턴값이 있는 함수 */ fun max(a: Int, b: Int): Int { //코틀린의 if문은 식(리턴 값이 존재)이지 문(block, return이 없음)이 아니다. return if (a > b) a else b } /** * max 함수와 간략 버전 * 함수의 본문이 식으로만 이루어져있다면, 아래처럼 간략하게 바꿀 수 있다. * 또한 반..
Springboot,Redis - Springboot Redis Nodes Cluster !(레디스 클러스터) 이전 포스팅에서는 Redis Server들의 고가용성을 위해 Redis Sentinel을 구성하여 Master-Slave 관계의 구성을 해보았습니다. ▶︎▶︎▶︎Redis - Sentinel 이란? 설정방법! Redis 고가용성을 위한 방법 Sentinel을 구성하여 Redis Server들의 고가용성을 키워주는 방법 이외에도 사실 Redis는 Cluster라는 좋은 기능을 지원해줍니다. 그럼 Sentinel은 무엇이고 Redis Cluster는 다른 것인가? 대답은 엄연히 다른 기능입니다. 간단히 비교하면 Sentinel는 Master-Slave관계를 구성합니다.(Redis Server 끼리 ..