Spring Framework
Spring Cookie와 Session (로그인 유지 예제)
쿠키(Cookie) `클라이언트 측`에 저장되는 작은 텍스트 파일 서버에서 클라이언트로 전송되어 클라이언트 측에 저장됩니다. 클라이언트 요청 시에 요청 헤더에 쿠키를 포함하여 서버에 전송됩니다. 만료 기간을 설정할 수 있어서 일정 기간 동안 유지될 수 있습니다. 클라이언트 측에서 수정 가능하므로 보안에 취약할 수 있습니다. @Controller public class CookieController { @GetMapping("/setCookie") public String setCookie(HttpServletResponse response) { // 쿠키 생성 및 설정 Cookie cookie = new Cookie("username", "Kim"); cookie.setMaxAge(7 * 24 * 60 ..
Spring 공통적인 작업 처리를 위한 HandlerInterceptor
HandlerInterceptor Spring Framework에서 HandlerInterceptor는 요청 처리의 전, 후 또는 요청 전체에 대한 처리를 수행하는 인터셉터입니다. 주로 요청의 전처리, 후처리, 예외 처리 등을 담당하여 공통적인 작업을 처리할 수 있도록 도와줍니다. 인터셉터 생성 public class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 요청 전처리 작업 수행 // 예: 인증, 권한 체크 return tr..
Spring 다국어 적용하는 방법들
방법1: .properites 파일 사용 다국어에 대한 메시지를 `프로퍼티 파일`에 저장하고, 해당 파일을 다국어별로 구분하여 작성합니다. 각 언어에 대한 프로퍼티 파일을 생성하고, 메시지 키와 해당 언어에 대한 값을 정의합니다. Spring Framework에서는 `MessageSource` 인터페이스를 사용하여 다국어 메시지를 관리합니다. MessageSource를 구현하는 `ResourceBundleMessageSource` 클래스를 주로 사용합니다. 프로퍼티 파일 생성 한국어인 경우: messages_ko.properties greeting.message=안녕 영어인 경우: messages_en.properties greeting.message=Hello MessageSource 설정 @Confi..
Spring 트랜잭션
Spring 트랜잭션 Spring Framework에서 제공하는 트랜잭션 관리 기능을 제공합니다. (트랜잭션이란 데이터베이스나 다른 영속성 저장소에서 여러 개의 연산을 하나의 논리적 단위로 묶어서 원자성, 일관성, 격리성, 지속성을 보장하는 작업 단위입니다.) Spring 트랜잭션 선언적 트랜잭션 관리 Spring은 `@Transactional` 어노테이션을 사용하여 선언적 트랜잭션 관리를 지원합니다. 이를 통해 개발자는 트랜잭션 관련 코드를 직접 작성하지 않고도 간편하게 트랜잭션을 사용할 수 있습니다. 트랜잭션 경계 설정 Spring은 트랜잭션 경계를 설정하여 트랜잭션의 시작과 종료를 자동으로 처리합니다. 경계 안에서 메서드가 정상적으로 종료되면 커밋하고, 예외가 발생하면 롤백합니다. 트랜잭션 경계를 ..
Spring 스프링 JDBC (feat. JdbcTemplate)
Spring JDBC `JDBC(Java Database Connectivity)`는 Java 언어를 통해 데이터베이스에 접속하고 SQL 쿼리를 실행하는 데 사용되는 API입니다. `Spring JDBC`는 Spring Framework에서 제공하는 JDBC를 좀 더 편리하게 사용할 수 있도록 기능을 제공하는 모듈입니다. `Spring JDBC`는 추상화된 인터페이스와 유틸리티 클래스, 예외 처리 기능 등을 제공하여 개발자가 간단하게 데이터베이스 액세스를 구현할 수 있도록 도와줍니다. JDBC보다 편리해진 Spring JDBC 연결 관리 및 자원 해제 Spring JDBC는 데이터베이스 연결(Connection)과 자원 해제를 자동으로 처리합니다. JDBC에서는 데이터베이스 연결을 수동으로 열고 닫아야 ..
Spring 프로퍼티 파일 ( .properties, .yaml), 프로파일(profiles)
.properties 파일 Spring 어플리케이션에서 설정 정보(빈 클래스나 의존관계 정보)를 XML로 분리하여 설정 값들을 변경하거나 추가할 때 소스 코드를 수정할 필요 없이 XML 설정 파일을 수정하는 것으로 설정을 업데이트 할 수 있습니다. XML에는 빈 클래스나 의존관계 뿐 아니라 빈이 필요로 하는 설정 정보를 property 값으로 지정해줄 수 있습니다. 이런 property 값 중에서 환경에 따라 자주 바뀌는 것은 `.property 파일`과 같은 별도의 리소스 형태로 분리하였습니다. 이는 어플리케이션의 유연성과 유지보수성을 향상시킵니다. db.driverClassName=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost/testdb db.usern..
Spring @ComponentScan, @Import, @Enable
컴포넌트 검색(Component Scan)을 수행하는 방법은 다음 3가지가 있습니다. 빈 스캐너를 내장한 어플리케이션 컨텍스트를 사용하는 방법 XML을 이용한 빈 스캐너 등록: `` `@ComponentScan` 어노테이션 사용하여 검색 대상 패키지를 지정하는 방법 이번 포스팅에서는 자바 코드 설정을 이용한 방법인 `@ComponentScan`에 대해 설명하겠습니다. @ComponentScan `@ComponentScan` 어노테이션을 사용하면 Spring을 지정된 패키지와 패키지의 하위 패키지를 스캔하여 @Component 어노테이션이 적용된 클래스를 찾아 빈으로 등록해줍니다. @Configuration @ComponentScan("패키지 경로") public class AppConfig{ } @Com..
Spring 빈 생명주기( Bean Life Cycle )
빈 생명주기(Bean Life Cycle) 빈(Bean) 생명주기는 Spring Framework에서 관리되는 객체가 생성되고, 초기화되고, 소멸되는 과정을 말합니다. Spring은 빈의 생명주기를 관리하기 위해 다양한 콜백 메서드와 인터페이스를 제공합니다. Spring의 빈 생명주기 관리는 개발자가 별도로 처리할 필요 없이 Spring 컨테이너가 자동으로 처리해주기 때문에 편리합니다. 이를 통해 객체의 초기화 및 소멸에 관련된 로직을 적절히 구현하고 관리할 수 있습니다. 스프링 컨테이너 생성 스프링 빈 생성 의존 관계 주입 초기화 콜백 빈 사용 소멸전 콜백 스프링 종료 아래 이미지는 더욱 상세히 빈 생명주기를 보여주는 이미지입니다. 빈 인스턴스화 및 DI 빈 인스턴스의 생성 Spring 컨테이너는 빈을..