Application

    [스프링 인 액션 정리] 4장. 스프링 시큐리티

    4-1. 스프링 시큐리티 활성화하기 스프링 애플리케이션에서 스프링 시큐리티를 사용하기 위해서는 스프링 부트 스타터 시큐리티 의존성을 빌드 명세에 추가해야 한다. org.springframework.boot spring-boot-starter-security org.springframework.security spring-security-test test 의존성을 추가하면 스프링 애플리케이션이 시작되면 스프링이 우리 프로젝트의 classpath에 있는 스프링 시큐리티 라이브러리를 찾아 기본적인 보안 구성을 설정해 준다. 기본적인 보안 구성 (security starter를 프로젝트 빌드 파일에 추가했을 경우) 모든 HTTP 요청 경로는 인증되어야 한다. 어떤 특정 역할이나 권한이 없다. 로그인 페이지가 따..

    [스프링 인 액션 정리] 3장. 데이터로 작업하기

    3.1 JDBC를 사용해서 데이터 읽고 쓰기 스프링의 JDBC 지원은 JdbcTemplate 클래스에 기반을 둠. JDBCTemplate은 JDBC를 사용할 때 요구되는 모든 형식적이고 상투적인 코드없이 개발자가 관계형 데이터베이스에 대한 SQL 연산을 수행할 수 있는 방법을 제공. JDBCTemplate을 사용하지 않고 데이터베이스 쿼리하면 데이터베이스 Connection 생성, 명령문 생성, 연결과 명령문 및 결과 세트를 닫고 클린업 하는 코드들로 쿼리 코드가 둘러싸여 복잡. JDBCTemplate 및 H2 데이터베이스 의존성 추가 우리 프로젝트의 classpath에 추가 => 스프링 부트의 JDBC starter의 의존성을 빌드 명세에 추가하면 간단. ... 1.4.196 ... org.spring..

    [스프링 인 액션 정리] 1. 스프링 시작

    1-1. 스프링이란? 스프링 프레임워크는 Spring Application Context라는 컨테이너를 제공. 이 컨테이너에서 애플리케이션 컴포넌트(Bean)들을 생성하고 관리한다. 이때 Bean의 상호 연결은 DI(의존성 주입) 패턴을 기반으로 수행된다. DI (Dependency Injection) 객체를 직접 생성해서 사용하지 않고, 의존을 주입 받아 사용하는 방법. B 객체를 A 객체에서 직접 생성하는 경우 public class A { private B b = new B(); // 객체를 직접 생성 // main public static void main(String[] args) { A a = new A(); } } 외부에서 생성된 B객체를 생성자를 통해 의존 관계를 주입하는 경우 => DI ..

    [모던 자바 인 액션 정리] 7장. 병렬 데이터 처리와 성능

    자바 7 이전 병렬 처리 데이터를 서브 파트로 분할하고, 서브 파트를 각각의 스레드로 할당한다. 스레드로 할당한 다음에는 의도치 않은 레이스 컨디션이 발생하지 않도록 적절한 동기화를 추가해야 하며 마지막으로 부분 결과를 합쳐야 한다. 자바 7의 새로운 병렬 처리 방법 포크/조인 프레임워크 기능을 제공 자바 8의 새로운 병렬 처리 방법 스트림을 통한 병렬 처리 병렬 스트림 스트림에 parallelStream()을 호출하면 병렬 스트림이 생성된다. 병렬 스트림이란 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림. 병렬 스트림을 이용하면 모든 멀티코어 프로세서가 각각의 청크를 처리할 수 있도록 할당할 수 있다. Stream.iterate(1L, i -> i + 1) .limit(n..

    [모던 자바 인 액션 정리] 4장. 스트림 소개

    스트림 자바8에서 추가된 기능으로, 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 선언형으로 구현함으로써, if 등의 제어 블록을 사용해서 어떻게 동작을 구현할지 지정할 필요 없이, 동작을 지정할 수 있다. 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. (parallelStream()) 예시 // 기존의 코드 public static List getLowCaloricDishesNamesInJava7(List dishes) { List lowCaloricDishes = new ArrayList(); for (Dish d : dishes) { if (d.getCalories() < 400) { lowCaloricDishes.add(d); } }..