본문 바로가기

분류 전체보기77

[spring] 스프링 부트에서 Spring Security 사용하기 Spring Security 보안과 관련된 인증(Authentication) / 권한부여(Authorization) 기능 제공 Spring Security 실습할 view 준비하기 Thymeleaf로 view rendering을 할 것이므로, spring-boot-starter-thymeleaf 의존성 추가 컨트롤러 추가하여 "/hello" 및 "/my" GetMapping index / hello / my html 생성 테스트1 @WebMvcTest로 MockMvc 주입받기 hello / my에 get요청을 보내는 @Test 생성 (mockMvc.perform(get("/hello")) ResultActions의 andExpect(view().name("hello"))로 이름 확인! cf) 아무의미 없.. 2020. 5. 19.
[spring] 스프링 부트에서 Redis 사용하기 Redis? Key-value NoSQL DB 캐시 / 메세지 브로커 / Key-value Store로 사용가능 Redis 설치하기 의존성 추가 : spring-boot-starter-data-redis 레디스 인스턴스 생성 cf) redis는 공식적으로 윈도우를 지원하지 않지만, 능력자가 비공식적으로 사용할 수 있게 만들어놓았다. 해당 링크에서 설치한 뒤, 서버를 띄워서 cli를 사용하면 된다. github.com/microsoftarchive/redis/releases microsoftarchive/redis Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind o.. 2020. 5. 18.
[spring] 데이터베이스 초기화 및 마이그레이션 1번 - Spring Data JPA를 사용한 데이터베이스 초기화 1. spring.jpa.generate-ddl=true - @entity가 명시된 클래스를 찾아서, 해당 클래스에 맞는 ddl을 생성하고 실행 2. spring.jpa.hibernate.ddl-auto create-drop : 어플리케이션 실행 시, 테이블 생성하고, 종료 시 drop create : 어플리케이션 실행 시, 기존 테이블 drop하고 테이블 생성 update : 어플리케이션 실행 시, Entity 클래스와 스키마를 비교해서, DB에 없는 테이블, 컬럼만을 추가 (기존 스키마의 정보를 바꿀 수는 없음) 3. spring.jpa.show-sql=true - 콘솔에 JPA를 통해 실행되는 SQL문을 출력 4. spring.jpa.. 2020. 5. 17.
[왜] 스프링부트 테스트에서 repository save()가 반환하는 객체를 사용해야 할까? 궁금증 인프런 - 스프링 부트 개념과 활용(백기선)에서 스프링 데이터 6부 : 스프링 데이터 JPA 연동을 듣다가 생긴 호기심이다. @DataJpaTest에서 엔티티 객체를 생성하여 save()했는데 왜 반환된 객체를 새로운 참조 변수에 담아 그를 테스트하는지 궁금했다. 해결 save() save()는 엔티티의 상태가 어떻든 저장한다. 엔티티를 새로 저장할 수도 있고, 기존 엔티티를 새로운 엔티티와 병합할 수도 있다. 병합 시 동일한 id에 연결된 엔티티에 상태를 복사하고 그 엔티티를 반환한다. save()로 새로 저장하는 경우에는 Account와 newAccount가 동일한 객체다. 하지만, merge하는 경우엔 다른 인스턴스일 것이다. 반환된 인스턴스를 사용하지 않으면, 분리된 엔티티(detached.. 2020. 5. 11.
[왜] 스프링부트의 repository는 클래스가 아니라 인터페이스일까? 설명 Spring Data JPA는 구현체 클래스를 제공한다. 즉, 구현 객체를 동적으로 생성해서 주입하게 된다. Entity 타입과 PK 타입을 repository 인터페이스에서 제공하기만 한다면, Spring Data JPA가 기본적인 CRUD 메소드를 만들어 준다. 메소드 이름을 파싱해서 적절한 쿼리를 만든다. 예컨대 'find', 'by', 'distinct'와 같은 키워드들을 말이다. 게다가 쿼리를 위한 DSL도 가지고 있다. (Querydsl) QueryDsl은 Type-Safe한 쿼리를 위한 스프링에서 제공하는 Domain Specific Language SQL같이 문자로 Type Check가 불가능하고, 실행하기 전까지 작동 여부를 확인 하기 어려운 부분을 보완하여 SQL을 Java로 Ty.. 2020. 5. 11.