프레임워크/스프링 프레임워크

    @Transactional 애노테이션 정리

    @Transactional 애노테이션이란? Spring 에게 트랜잭션 경계를 관리하도록 메타 정보를 주는 것이다. @Transactional 이 붙은 메서드가 호출됐을 때, 스프링은 새 트랜잭션을 시작한다. 메서드가 성공적으로 완료되면 트랜잭션이 커밋된다. 예외가 발생하면 트랜잭션이 롤백된다. @Transactional 애노테이션으로 설정할 수 있는 것들 import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service // 여기에도 쓸 수 있고, 여기에 쓰면 클래스 내부의 모든 메서드에 적용된다. public class YourService { priva..

    @AutoConfigureTestDatabase 애노테이션이란?

    @AutoConfigureTestDatabase 애노테이션이란? 이름처럼 Test DB 를 구성할 때 유용한 애노테이션이다. 테스트 시 DB 를 테스트 DB 로 대체할 수 있다. 참고 애노테이션 내부 구현을 보면 @PropertyMapping("spring.test.database") 라고 된 부분이 있는데, 이 부분이 test DB 를 사용하도록 세팅하는 부분이다. @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @ImportAutoConfiguration @PropertyMapping("spring.test.database") public @interfac..

    @MockBean 애노테이션이란?

    @MockBean 이란? 특정 빈을 테스트에서 의존하지 않도록 가짜 빈을 생성해준다. 서비스 계층 코드 서비스 계층 코드를 테스트 하는데 persistence 레이어의 구현은 관심사가 아니다. 아래의 코드를 어떻게 테스트할 수 있을까? @Service public class EmployeeServiceImpl implements EmployeeService { @Autowired private EmployeeRepository employeeRepository; @Override public Employee getEmployeeByName(String name) { return employeeRepository.findByName(name); } } @MockBean 이용하기 EmployeeReposit..

    @TestConfiguration 애노테이션이란?

    @TestConfiguration 애노테이션이란? 애플리케이션 컨텍스트에서 특정 Bean 을 대체하고 싶을 때 사용한다. 실제 Application Context 를 부트스트랩하지 않고 특별한 테스트 Configuration 을 이용하고 싶을 때 사용한다. 사용 방법 사용 방법은 2가지가 있다. static class 이용하기 @RunWith(SpringRunner.class) public class EmployeeServiceImplIntegrationTest { @TestConfiguration static class EmployeeServiceImplTestContextConfiguration { @Bean public EmployeeService employeeService() { return n..

    @DataJpaTest 애노테이션이란?

    @DataJpaTest 애노테이션이란? JPA 컴포넌트에 대한 테스트에만 초점을 맞춘 애노테이션이다. 리포지토리 계층에 대한 격리된 테스트 환경을 설정하는데 유용하다. full auto-configuration 이 비활성화되고 대신 JPA 테스트와 관련된 configuration 만 활성화된다. full application context 를 로드하기 싫을 때 유용하다. @DataJpaTest 를 사용하면 각 테스트가 트랜잭션이 되고 테스트가 끝날 때 롤백된다. 임베디드 인메모리 데이터베이스를 사용한다. @AutoConfigurationTestDatabase 애노테이션을 이용해 이 설정을 재정의(override) 할 수 있다. SQL 쿼리는 기본적으로 spring.jpa.show-sql 속성을 true ..

    Spring Boot Configuration Processor 란?

    Spring Boot Configuration Processor 란? Configuration 메타데이터를 처리하는데 도움을 주기 위한 도구이다. 프로퍼티의 속성을 수동으로 추적하기 까다롭고 오류가 발생하기 쉬운 대규모 프로젝트에 용이하다. 메타데이터 생성을 자동화함으로써 더 나은 코딩 관행을 장려하고 개발자 생산성을 향상시킨다. 사용하는 이유 우리는 보통 프로퍼티의 값을 설정할 때, 어떤 기능을 하는지, 기본 값이 있는지, 더이상 사용되지 않는지, 속성이 존재하는지조차 모르는 경우가 많다. Spring Boot Configuration Processor 를 통해 이러한 불편함을 해결할 수 있다. IDE 의 자동 완성 (Auto-Completion in IDEs) IDE 는 메타데이터를 제공받음으로써, ..

    @EnableGlobalMethodSecurity 애노테이션이란?

    @EnableGlobalMethodSecurity 애노테이션이란? 메서드 레벨에서 보안을 추가할 수 있는 애노테이션이다. 역할, 권한 혹은 기타 속성 기반으로 개별 메서드를 보호하는데 유용하다. 현시점 (2023년 7월 기준) 의 최신 애노테이션은 @EnableMethodSecurity 애노테이션이다. 둘은 이름이 엄청 비슷한데 다른 애노테이션이므로 주의해야 한다. 공식 문서의 마이그레이션 가이드를 보고 최신으로 마이그레이션을 진행해도 된다. 사용 방법 1. 애노테이션 활성화하기 @Configuration 클래스에 @EnableGlobalMethodSecurity 애노테이션을 추가한다. 2. Security Model 선택하기 @EnableGlobalMethodSecurity 애노테이션은 몇가지 속성을 ..

    @EnableWebSecurity 애노테이션이란?

    @EnableWebSecurity 애노테이션이란? web security 구성정보를 활성화하기 위해 사용된다. 스프링에 인증 및 권한을 제공하는 보안 구성을 적용하도록 신호를 보낸다. 주로 WebSecurityConfigurerAdapter 클래스를 상속하여 사용한다. 기본 보안 설정을 제공하고, 메서드 오버라이딩을 통한 보안 커스터마이징을 제공한다. 인증 (Authentication) 구성하기 configure(AuthenticationManagerBuilder auth) 메서드를 재정의하여 사용자 인증 방법을 구성할 수 있다. 사용자 세부 정보를 검색하는 방법 (ex. DB, LDAP, 인메모리)과 비밀번호 인코딩 방법 등을 정의할 수 있다. @Autowired public void configure..

    @EnableWebMvc 애노테이션이란?

    @EnableWebMvc 애노테이션이란? @Configuration 애노테이션과 함께 쓰여 애노테이션 클래스가 Spring MVC 의 구성 클래스로 작동해야 한다는 신호를 보낸다. 이 클래스는 많은 필수 MVC 관련 컴포넌트를 설정하는 WebMvcConfigurationSupport 에서 Spring MVC 구성을 가져온다. WebMvcConfigurationSupport 에는 Spring Web Mvc 를 구성하기 위한 다양한 기본 설정들이 들어있다. @EnableWebMvc 애노테이션을 사용하고 WebMvcConfigurer 인터페이스 를 구현하여 사용자 정의 구성을 활성화할 수도 있다. 기본 동작을 재정의하거나 확장할 수 있다. 용례 @Configuration @EnableWebMvc public ..

    스프링 WebMvcConfigurer 인터페이스란?

    WebMvcConfigurer 란? 스프링 프레임워크에서 제공하는 인터페이스이다. 보일러플레이트 코드 없이 요구사항에 맞게 프레임워크를 조정할 수 있게 해준다. 특정한 스프링 클래스를 구현하거나 상속할 필요 없이 MVC 구성정보를 제어할 수 있게 해준다. @EnableWebMvc 를 통해 활성화된 Web MVC 애플리케이션의 구성정보를 커스터마이징하는 것을 돕기도 한다. 스프링 부트에 있는 기본 설정이 마음에 들지 않거나 스프링에 추가적인 설정을 해줄 필요가 있을 때 사용한다. /** * Defines callback methods to customize the Java-based configuration for * Spring MVC enabled via {@code @EnableWebMvc}. * *..

    스프링부트 @EnableConfigurationProperties 애노테이션이란?

    @EnableConfigurationProperties 란? 스프링부트의 애노테이션 중 하나이다. @ConfigurationProperties 애노테이션 이 들어간 빈을 활성화시키기 위해 사용된다. @ConfigurationProperties 애노테이션 은 프로퍼티에 있는 문자열을 매핑하여 JVM 메모리로 올리기 위해 사용된다. 왜 @EnableConfigurationProperties 를 사용하는가? 타입 안정성: 프로퍼티를 바인딩하며 IDE 의 컴파일 타임 검사 및 코드 완성 기능을 활용할 수 있어서 오류 발생 여지가 줄어든다. 재사용성: 클래스에 속성 집합을 정의하고 언제든 해당 클래스를 재사용할 수 있다. 검증: 프로퍼티에 검증 규칙을 쉽게 추가할 수 있다. 관리의 용이성: 관련된 프로퍼티를 클래..

    스프링 부트의 @ConfigurationProperties 애노테이션이란?

    @ConfigurationProperties 란? 스프링 부트의 애노테이션이다. 외부의 configuration properties 값을 매핑하기 위해 사용한다. application.properties 에 하드코딩된 값을 자바 메모리로 가져오는 것이다. 왜 쓰는가? 타입 안정성: 코드 완성 및 리팩토링 기능과 같은 IDE 지원을 포함하여 강력한 속성 타이핑이 가능하다. 값 검증: JSR 303/349 애노테이션들을 이용해 강력한 값 검증 규칙을 추가하는 것이 가능하다. 계층 매핑: 계층이 있는 프로퍼티들을 편리하게 매핑할 수 있다. 보다 체계적이고 가독성이 높은 코드를 작성할 수 있다. 릴렉스 바인딩: 다양한 형태의 프로퍼티 이름을 지원한다. ex) my-property, my_property, myP..

반응형