본문 바로가기
반응형

스프링49

[Spring] Ch 01-1. 스프링 시큐리티를 위한 gradle 설정하기 패스트캠퍼스"한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지" 강의의 "안정적인 서비스를 위한 스프링DATA와 Security - 스프링 시큐리티" 파트를 정리한 글입니다. 강의 관련 코드 https://github.com/jongwon/sp-fastcampus-spring-sec 다음 내용은 스프링 시큐리티 실습을 위한 프로젝트를 gradle 통해 구성하는 방법에 대해서 다룹니다. gradle 프로젝트 구성하기 settings.gradle · settings.gradle에서는 전체 프로젝트의 구조를 빌드한다. · 다음 설정으로 한개의 프로젝트를 구성할 수 있다. rootProject.name="project-name" include "project-name" · 다음 설정으로 여러 모.. 2022. 2. 11.
스프링에서 트랜잭션을 처리하는 방법: @Transactional JPA와 트랜잭션 관리 · JPA 자체는 어떠한 선언적인 형식의 트랜잭션 관리 기능도 제공하지 않는다. DI 컨테이너 외부에서 JPA를 사용할 때 트랜잭션은 개발자가 프로그래밍 방식으로 처리해야 한다. - 선언형 프로그래밍은 '무엇을'을 정의하믄 프로그래밍, 명령형은 프로그래밍은 '어떻게'를 정의하는 프로그래밍을 말한다. https://velog.io/@mgm-dev/선언적-VS-명령적 UserTransaction utx = entityManager.getTransaction(); try { utx.begin(); businessLogic(); utx.commit(); } catch(Exception ex) { utx.rollback(); throw ex; } · 이러한 트랜잭션 관리 방식은 코드에서 트.. 2022. 2. 4.
JUnit 테스트에서 ApplicationRunner 실행하지 않도록 설정하기 ApplicationRunner는 스프링 애플리케이션을 시작할때, 어떠한 동작을 하기 위해 사용된다. 그런데 이러한 동작이 테스트 상황에서는 필요하지 않을 수 있다. 이럴 때, 어떻게 해당 로직을 제외하고 테스트를 진행할까? 가장 간단한 방법으로 @Profile 애노테이션을 사용하는 방법이 있다. 해당 애노테이션은 스프링 애플리케이션의 런타임 환경을 관리할 수 있도록 도와준다. 이제 방법을 알아보자. 아래와 같이 ApplicationRunner를 상속하는 클래스에 "test 라는 이름의 그룹을 활성화하지 않는다"라는 의미에 @Profile("!test") 애너테이션을 추가한다. @Profile("!test") @Component public class SomeApplicationRunner impleme.. 2022. 1. 9.
JUnit의 @BeforeAll(@Before)대신 생성자를 사용해도 괜찮지 않을까? JUnit은 애너테이션을 통해서 메서드의 역할을 정할 수 있다. 이때, 애너테이션이 붙은 메서드는 실행 순서가 정해진다. JUnit5를 기준으로 @BeforeAll -> @BeforeEach -> @Test -> @AfterEach -> @AfterAll 순서로 메서드가 실행된다. 이때, 문득 떠오른 생각이 있었다. @BeforeAll이 모든 테스트 메서드 실행 전 수행되고 주어진 테스트에 대해 한 번만 실행된다면, 그냥 생성자를 사용하면 되는게 아닐까? class 블라블라Test { @BeforeAll static void setUp() { } } vs class 블라블라Test { 블라블라Test() { } } 어떤 것을 사용하는게 맞을까? 결론적으로 생성자 대신 @BeforeAll을 사용하는 것이 .. 2021. 12. 23.
스프링 세션 (Spring Session)이란? spring-session-jdbc 사용하기 스프링 세션은 서버에 저장되는 HTTP 세션의 한계로부터 세션 관리를 자유롭게 한다는 목표를 갖고 있다. 이러한 해결책으로 특정 애플리케이션 컨테이너(예:톰캣)에 얽매이지 않고, 클러스터링된 세션을 지원하여 클라우드에서 여러 서비스들 사이에 세션 데이터의 공유를 쉽게 만든다. 또한 동일한 브라우저에서 여러 개의 세션 지원하고, 헤더에서 세션을 전송한다. 스프링 세션 사용하기 스프링 세션은 JDBC, MongoDB, Redis 등을 사용하여 데이터를 유지할 수 있다. 여기서는 Spring-Session-JDBC를 사용하여 웹 앱에서 인증 정보를 관리해보자. ▶ 스프링 부트 프로젝트를 생성하고, 다음과 같은 종속성을 추가한다. org.springframework.boot spring-boot-starter-.. 2021. 11. 26.
Mockito란? Mockito 사용하기 Mockito란? · Mock 객체를 쉽게 만들고, 관리하고, 검증할 수 있는 방법을 제공하는 프레임워크 - Mock: 진짜 객체와 비슷하게 동작하지만, 프로그래머가 직접 행동을 관리하는 객체 - 공홈 https://site.mockito.org/ · 테스트를 작성하는 자바 개발자의 45%가 사용하는 Mock 프레임워크 - 2021년 젯브레인 설문조사 기준 https://www.jetbrains.com/lp/devecosystem-2021/java/ · 대체제: EasyMock, JMock · 애플리케이션에서 데이터베이스, 외부 API 등을 테스트할 때, 해당 제품들이 어떻게 작동하는지 항상 사용하면서 테스트를 작성한다면 매우 불편할 것이다. 이럴 때 어떻게 작동하는지 예측을 하여 Mock 객체를 만들어.. 2021. 11. 15.
반응형