Spring Framework/Spring

Spring Framework/Spring

Spring h2 인메모리 DatabaseCleaner 적용 방법 - 테스트 데이터 초기화를 통한 독립적인 테스트 환경 구축

h2 인메모리 환경 Database Cleaner 오작동문제상황기존 DatabaseCleaner 코드@Componentpublic class DatabaseCleaner { @Autowired private DataSource dataSource; @Autowired private JdbcTemplate jdbcTemplate; private List tables; @PostConstruct public void init() { this.tables = jdbcTemplate.query("show tables", (rs, rowNum) -> rs.getString(1)).stream().toList(); } public void clean() throws SQLExcepti..

Spring Framework/Spring

Spring ServletContainer, Dispatcher Servlet 동작 위치 이해하기 - Filter, Interceptor 특징 및 처리 순서

Servlet이란Servlet은 클라이언트의 요청을 처리하고, 그 결과를 응답하는 Java의 웹 프로그래밍 기술이다.Servlet Container는 웹 서버에 오는 요청을 가장 먼저 받습니다.Servlet Filter를 통해 전달받은 요청을 필터링할 수 있습니다. Spring Security의 Filter도 Servlet Filter에 속하며, 해당 위치에서 인증/인가를 처리합니다.Servlet 특징클라이언트의 요청에 대해 동적으로 작동한다.Java Thread를 이용하여 동작한다.Request, Response 객체를 통해 개발자가 직접 HTTP 요청을 Parsing 하지 않고 편리하게 사용할 수 있게 해 준다.Servlet 통신 방식클라이언트 요청이 Servlet Container로 Request를..

Spring Framework/Spring

Spring @PostConstruct, @Value 통한 빈 의존성 설정 - @PreDestroy bean destruction

@PostConstructSpring calls the methods annotated with @PostConstruct only once, just after the initialization of bean properties. 스프링은 @PostConstruct가 붙은 메서드를 빈 속성 초기화 이후에 단 한 번 호출합니다. The method annotated with @PostConstruct can have any access level, but it can’t be static. @PostConstruct가 붙은 메서드는 static으로 선언될 수 없습니다.초기화 작업을 하므로, 정적 메서드로 선언될 수 없다.@Componentpublic class DbInit { @Autowired ..

Spring Framework/Spring

Spring Annotation과 Meta Annotation 이해하기 - 어노테이션 활용법

Annotation자바 어노테이션은 MeteData를 소스 코드(class, method, field)에 붙여 Marker interface 역할을 하여, 특정 동작을 표시하는 데 사용합니다. Marker Interface란Marker Interface는 구현 클래스에 특별한 동작을 부여하거나 특정 속성을 나타내기 위해 아무 메서드도 포함하지 않는 인터페이스입니다.public interface Marker { // 아무 메서드도 정의하지 않음} 어노테이션 주의 사항@interface로 정의해야 합니다.모든 어노테이션은 기본적으로 java.lang.Annotation 인터페이스를 상속하기 때문에 다른 클래스나 인터페이스를 상속할 수 없다.Parameter 멤버들의 접근자는 public or defau..