Java/Spring
-
Spring Container(스프링 컨테이너)스프링 컨테이너는 Spring 프레임워크의 핵심 컴포넌트이다.스프링 컨테이너는 Bean 객체의 생명 주기를 관리하며, 생성된 Bean 객체들에게 추가적인 기능을 제공한다.Bean 이란 스프링에서 사용하는 자바 객체를 의미한다. Spring Container 의 종류스프링 컨테이너는 BeanFactory 와 ApplicationContext 두 종류의 인터페이스로 구현되어 있다. BeanFactorySpring 프레임워크에서는 빈(Bean) 이라는 자바 객체를 생성하고 관리하는 BeanFactory 인터페이스를 사용한다.BeanFactory 는 스프링 컨테이너의 핵심 역할을 수행하며,빈의 등록 및 생성, 조회 등 빈의 라이프사이클 관리, 의존성 주입 등을 ..
Spring Container, BeanFactory, ApplicationContextSpring Container(스프링 컨테이너)스프링 컨테이너는 Spring 프레임워크의 핵심 컴포넌트이다.스프링 컨테이너는 Bean 객체의 생명 주기를 관리하며, 생성된 Bean 객체들에게 추가적인 기능을 제공한다.Bean 이란 스프링에서 사용하는 자바 객체를 의미한다. Spring Container 의 종류스프링 컨테이너는 BeanFactory 와 ApplicationContext 두 종류의 인터페이스로 구현되어 있다. BeanFactorySpring 프레임워크에서는 빈(Bean) 이라는 자바 객체를 생성하고 관리하는 BeanFactory 인터페이스를 사용한다.BeanFactory 는 스프링 컨테이너의 핵심 역할을 수행하며,빈의 등록 및 생성, 조회 등 빈의 라이프사이클 관리, 의존성 주입 등을 ..
2024.11.05 -
Spring 에서 Bean 은 싱글톤형태로 관리되는 객체를 의미하며 빌드 시 Spring 은 Bean 을 등록하는 과정을 거치게 된다. 프로젝트를 진행하다가 발생한 에러는 아래와 같다. 가려진 부분의 이름을 가진 Bean 을 찾지 못해서 발생한 에러이다. 에러가 발생 내용은 Service 어노테이션을 가진 2개의 클래스는 Maven Profile 별로 Bean 생성을 처리하기 위해서@Profile 어노테이션을 사용했다. 1개의 Service 는 개발자를 위해 dev 와 local Profile 을 설정했다. 또 하나는 배포 및 운영에서 사용할 Profile 을 적용했다. 하지만 실제로는 "real" Profile 을 가진 Service 클래스를 Bean 클래스에서 사용을 하고 있었으며Bean 으로 등록이..
org.springframeworkbeans.factory.NoSuchBeanDefinitionException (Bean 을 찾을 수 없는 에러)Spring 에서 Bean 은 싱글톤형태로 관리되는 객체를 의미하며 빌드 시 Spring 은 Bean 을 등록하는 과정을 거치게 된다. 프로젝트를 진행하다가 발생한 에러는 아래와 같다. 가려진 부분의 이름을 가진 Bean 을 찾지 못해서 발생한 에러이다. 에러가 발생 내용은 Service 어노테이션을 가진 2개의 클래스는 Maven Profile 별로 Bean 생성을 처리하기 위해서@Profile 어노테이션을 사용했다. 1개의 Service 는 개발자를 위해 dev 와 local Profile 을 설정했다. 또 하나는 배포 및 운영에서 사용할 Profile 을 적용했다. 하지만 실제로는 "real" Profile 을 가진 Service 클래스를 Bean 클래스에서 사용을 하고 있었으며Bean 으로 등록이..
2024.10.28 -
classpath 란?classpath 는 어플리케이션이 실행될 때 참조하는 리소스 및 클래스 파일의 경로를 의미한다.Spring 에서 application.properties, application.yml, 템플릿 데이터, 정적 자원 등을 찾아야 할 때 사용하는기준 경로이다. Gradle 프로젝트의 경우build/ └── classes/ └── java/ └── main/ └── com/example/... Maven 프로젝트의 경우target/ └── classes/ └── com/example/... Spring 빌드 시 src/main/java 의 컴파일된 .class 파일 뿐만이 아니라 src/main/resources/ 에 위치..
Spring Boot 에서 classpath 의 의미와 경로classpath 란?classpath 는 어플리케이션이 실행될 때 참조하는 리소스 및 클래스 파일의 경로를 의미한다.Spring 에서 application.properties, application.yml, 템플릿 데이터, 정적 자원 등을 찾아야 할 때 사용하는기준 경로이다. Gradle 프로젝트의 경우build/ └── classes/ └── java/ └── main/ └── com/example/... Maven 프로젝트의 경우target/ └── classes/ └── com/example/... Spring 빌드 시 src/main/java 의 컴파일된 .class 파일 뿐만이 아니라 src/main/resources/ 에 위치..
2024.10.23 -
환경 : Spring Boot 6, HikariDataSource 사용 데이터베이스 Insert 및 Update 하는 과정에서 예외가 발생된다면 해당 과정들의 데이터를 다시rollback 해야 하는 상황이 나타난다. 이러한 과정에서 예외가 발생하지 않았을 때 최종적으로 Insert 및 Update 를 하고예외가 발생했을 때 rollback 하기 위해선 Spring 에서 제공하는 Transaction 기술을 사용해야한다.자세한 내용은 Spring 공식문서에 나와있다. https://docs.spring.io/spring-framework/reference/data-access/transaction/strategies.html Understanding the Spring Framework Transactio..
DataSoruce TransactionManager 설정(commit, rollback)환경 : Spring Boot 6, HikariDataSource 사용 데이터베이스 Insert 및 Update 하는 과정에서 예외가 발생된다면 해당 과정들의 데이터를 다시rollback 해야 하는 상황이 나타난다. 이러한 과정에서 예외가 발생하지 않았을 때 최종적으로 Insert 및 Update 를 하고예외가 발생했을 때 rollback 하기 위해선 Spring 에서 제공하는 Transaction 기술을 사용해야한다.자세한 내용은 Spring 공식문서에 나와있다. https://docs.spring.io/spring-framework/reference/data-access/transaction/strategies.html Understanding the Spring Framework Transactio..
2024.09.12 -
SessionManagementFilter세션 관리를 위한 필터로 Spring Security 에서 4가지 기능을 지원한다. 세션관리 : 인증 후 사용자의 세션 관리(등록, 조회, 삭제)동시 세션 제어 : 동일 계정에 대한 세션 관리세션 고정 보호 : 인증 후 세션 쿠키를 재발급하여 세션 쿠키 조작 공격을 방지세션 생성 정책 : Always, If_Required, Never, Stateless 여기서 동시세션제어는 ConcurrentSessionFilter 가 담당한다. ConcurrentSessionFilterConCurrentSessionFilter 는 SessionRegistry 를 이용하여 사용자의 로그인 동시세션 제어를 한다.사용자 요청이 들어올 때마다 매번 세션이 만료(expired) 되었..
Spring Security SessionManagementFilter, ConcurrentSessionFilter(동시세션제어)SessionManagementFilter세션 관리를 위한 필터로 Spring Security 에서 4가지 기능을 지원한다. 세션관리 : 인증 후 사용자의 세션 관리(등록, 조회, 삭제)동시 세션 제어 : 동일 계정에 대한 세션 관리세션 고정 보호 : 인증 후 세션 쿠키를 재발급하여 세션 쿠키 조작 공격을 방지세션 생성 정책 : Always, If_Required, Never, Stateless 여기서 동시세션제어는 ConcurrentSessionFilter 가 담당한다. ConcurrentSessionFilterConCurrentSessionFilter 는 SessionRegistry 를 이용하여 사용자의 로그인 동시세션 제어를 한다.사용자 요청이 들어올 때마다 매번 세션이 만료(expired) 되었..
2024.09.06 -
Mybatis 를 사용하여 List 데이터를 Insert 하는 방법이다. 데이터는 아래와 같이 List 형 Map 을 사용했다.[ {role_id=O0100, right_name=기관관리자, site_code=101}, {role_id=S9900, right_name=시스템관리자, site_code=101}, {role_id=M0100, right_name=통합운영관리자, site_code=101}] SELECT MAX(right_seq)+1 FROM m_right INSERT INTO m_right(right_seq, right_name, right_desc, site_code, role_id) VALUES ( ..
Mybatis foreach, selectkey, Auto Increment 구현Mybatis 를 사용하여 List 데이터를 Insert 하는 방법이다. 데이터는 아래와 같이 List 형 Map 을 사용했다.[ {role_id=O0100, right_name=기관관리자, site_code=101}, {role_id=S9900, right_name=시스템관리자, site_code=101}, {role_id=M0100, right_name=통합운영관리자, site_code=101}] SELECT MAX(right_seq)+1 FROM m_right INSERT INTO m_right(right_seq, right_name, right_desc, site_code, role_id) VALUES ( ..
2024.09.02