프레임워크

    스프링 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..

    스프링의 preHandle() 메서드란? (언제 실행될까?)

    preHandle() 메서드란? HandlerInterceptorAdapter 클래스에서 제공하는 하나의 메서드다. HandlerInterceptorAdapter 를 상속한 클래스를 bean 설정에 등록해두면, 스프링 인터셉터로 활용할 수 있다. xml 을 이용한 빈 설정을 사용하는 경우 @Configuration public class AppConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()); } } Java Config 를 이용한 빈 설정을 사용하는 경우 preHandle() 은 순서..

    간단한 스프링 부트 3 최초 실행 문제 해결 (Could not resolve org.springframework.boot:spring-boot-gradle-plugin)

    에러 발생 경위 스프링 부트로 프로젝트를 생성하려 했다. 최신 버전이 스프링 부트 3.0 으로 프로젝트를 생성하니 켜자마자 에러가 발생했다. 에러 내용 A problem occurred configuring root project 'adhdprotector'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.1. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.1 >..

    스프링 RedisTemplate 이란?

    RedisTemplate 이란? Spring Data Redis 에서 쓰는 핵심 클래스이다. Redis 내부에 있는 데이터 액세스를 도와주는 헬퍼 클래스이다. 클라이언트에서 작성해야 하는 레디스 공통로직을 제공해 레디스 이용을 편리하게 할 수 있도록 도와준다. 역할 커넥션 관리 (Connection management) 레디스 서버와 연결 시에 커넥션 풀과 리소스를 대신 관리해준다. 이로 인해 개발자는 직접 커넥션을 열거나 닫을 필요가 없어진다. 직렬화와 역직렬화 지원 (Serialize and Deserialize) 자바 Serializer 를 통해 Redis 스토리지와 데이터를 직렬화/역직렬화한다. 다른 여러 직렬화 기법도 제공하는데 문자열만 사용한다면 StringRedisTemplate 을 사용하는..

    자바 애노테이션으로 빈을 구성하는게 XML 로 구성하는 것 보다 나은 이유

    자바 애노테이션으로 빈을 구성하는 것이 XML 로 구성하는 것보다 나은 이유 구성정보와 코드가 함께 있다 (Colocation of configuration and code) 빈 구성정보가 직관적으로 자바 코드 내부에 있게 된다. 클래스가 어떻게 사용되는지 더이상 알아볼 필요 없이 직관적인 이해가 가능해진다. XML 구성정보 파일과 자바 파일을 왔다갔다 하는 비용을 줄여준다. 유지보수 하기 쉬운 코드가 된다. 보일러 플레이트 코드를 줄인다 (Reduce boilerplate) 빈을 함께 묶기 위한 보일러 플레이트 코드를 줄인다. XML 에서 빈과 해당 종속성을 명시적으로 정의할 필요 없이 애노테이션을 통해 자바코드에서 직접 이런 관계를 선언할 수 있다. 구성 정보를 작성하는 것이 보다 간결해진다. 컴파일..

    <context:annotation-config> 태그란? (스프링 빈 설정 xml)

    태그란? 자바 빈을 정의하는 xml 파일에서 사용된다. 애노테이션을 기반으로 하는 구성 정보 (configuration) 를 사용할 수 있게 해준다. 스프링에게 애플리케이션 컨텍스트가 만들어질 때 자바 클래스 애노테이션을 찾아보고 처리하라고 말하는 것이다. 동작 방식 추가 (Inclusion) 엘리먼트를 스프링 설정 파일에 넣는다. 이 설정 정보는 스프링에게 애노테이션 기반 구성정보를 지원하라고 전달한다. 빈 후처리 (Bean post-processors) 스프링은 애노테이션을 처리하는데 도움이 되는 빈 후처리기를 등록한다. 빈 후처리기는 @Autowired, @Resource, @PostConstruct, @PreDestory 와 같은 애노테이션을 처리한다. 스캐닝과 처리 (Scanning and Pr..

    스프링 세션 (Spring Session) 이란 무엇이고 어떻게 작동할까?

    스프링 세션 (Spring Session) 이란? 스프링 프레임워크에서 제공하는 모듈 중 하나로 기존의 HttpSession 을 대체한다. 분산된 스케일링 가능한 환경에서 세션 데이터를 관리한다. 외부 저장소를 사용하게끔 하여 서블릿 컨테이너에서 세션 데이터를 분리할 수 있도록 도와준다. Redis, JDBC, Hazelcast 애플리케이션 퍼포먼스 향상과 분산 환경에서 세션 관리가 쉬워진다는 장점이 생긴다. 스프링 세션은 어떻게 작동하는가? 의존성 설정 스프링 세션을 이용하기 위해서는 의존성을 먼저 설정해야 한다. spring-session-data-redis 의존성을 추가해주면 된다. 구성정보 설정 스프링 세션을 사용하기 위해 필요한 구성정보를 설정해야 한다. @Configuration 클래스에 @E..

    스프링 레디스 세션 사용법

    스프링 레디스 세션 사용법 스프링 레디스 세션 적용 이 끝나면 사용이 가능하다. 스프링 Http 세션을 사용하는 방법과 별반 다를 게 없다. 세션 속성 설정하기 컨트롤러 메서드에 있는 HttpServletRequest 에서 HttpSession 을 얻어올 수 있다. 얻어온 뒤에는 setAttribute() 메서드를 통해 세션을 설정해주면 된다. 혹은 그냥 파라미터에 HttpSession 타입을 넣어두면, 스프링에서 알아서 주입해준다. @PostMapping("/login") public String loginUser(@ModelAttribute User user, HttpServletRequest request) { // ... (Authentication logic) // If authenticatio..

    스프링 레디스 세션 적용법

    스프링 부트에서 레디스 세션 적용하는 방법 레디스 연결정보 설정 application.properties 혹은 application.yml 에 Redis hostname, port, password 등을 입력해주면 된다. @Configuration 빈 생성 @Configuration @EnableRedisHttpSession public class SessionConfig { } 스프링 부트가 아닌 환경에서 레디스 세션 적용하는 방법 애노테이션을 이용한 @Configuration 빈을 등록하는 방식으로도 가능하고 순수한 XML 파일 작성으로도 가능하다. 의존성 추가 spring-session-data-redis spring-data-redis Jedis 나 Lettuce 와 같은 Redis Client ..

    @EnableRedisHttpSession 은 어떻게 동작하는가? (feat. 스프링 세션에 레디스 활용하기)

    @EnableRedisHttpSession 이란? 스프링 세션 프로젝트에서 제공하는 애노테이션이다. 스프링 애플리케이션이 Redis 가 지원하는 분산 세션 (distributed sessions backed by Redis) 을 사용할 수 있게 해준다. 애플리케이션 메모리 대신 Redis 메모리를 사용하게 되므로 애플리케이션의 수평적 확장에 유용하고 모든 인스턴스에서 세션 데이터가 일관되게 유지된다. 작동 방식 환경과 애노테이션이 올바르게 프로젝트에 적용되었을 때 어떻게 동작하는지 알아보자. @EnableRedisHttpSession 애노테이션 인식 스프링은 @EnableRedisHttpSession 애노테이션을 인식한 뒤 레디스와 커넥션을 맺으며 세션을 관리할 RedisConnectionFactory ..

반응형