spring 9

250210 월 TIL

@Transaction은 왜 service에 거는게 맞는가?-일반적으로는 맞다.-장점1. 비즈니스 로직의 독립성 확보-> 만약 controller에 건다면 controller가 아닌 다른 곳(다른 컨트롤러, 스프링 배치)에서는 올바른 트랜잭션이 일어나지 않게 된다.2. 성능 향상-> DB를 조회할 수 있는 객체가 있는데, 이 객체가 조회할 때 갯수 제한이 있다. 만약 controller에 트랜잭션을 건다면, 컨트롤러에서 서비스를 조회하고 서비스가 처리하고 결과를 다시 컨트롤러로 보내는 것보다, 서비스에서 처리 후 결과만 보내는게 DB를 점유하는 시간이 더 짧아진다. 점유 시간이 짧아지면 DB를 조회하는 객체를 더 적게 쓰니 다른 작업들이 기다리는 시간이 줄어들어 결과적으로 성능이 향상된다.-단점개별 트랜..

TIL 2025.02.10

어노테이션(Annotation)

어노테이션이란?소스 코드에 추가적인 정보를 제공하는 메타데이터.비즈니스 로직에는 직접적인 영향을 주지 않음.클래스, 메서드, 변수, 인자 등에 추가 가능하며, 컴파일 또는 실행 시 특정 처리를 수행하도록 도움.어노테이션의 역할컴파일 시 정보 전달 (예: @Override → 오버라이딩 여부 확인)빌드 툴에서 코드 자동 생성 시 사용 (예: Lombok의 @Getter, @Setter)런타임 시 특정 기능을 수행하는 정보 전달 (예: @Autowired, @Controller, @Service)어노테이션의 동작 방식단순히 @를 붙인다고 동작하는 것이 아니라, 어노테이션을 처리하는 프로그램(Spring 등)이 리플렉션을 통해 해당 어노테이션을 해석하고 실행.어노테이션 자체는 정보 전달용 표식이며, 이를 처리..

Java/Spring 2025.02.09

250207 금 TIL

Spring Security와 인증 방식Spring Security 개요Spring Security는 애플리케이션의 인증 및 권한 관리를 담당하는 프레임워크.비유Spring Security → 은행의 보안 시스템 (가드)CustomUserDetailService → 방문자 명부를 관리하는 직원CustomAuthenticationFilter → 특정 VIP 고객만 입장할 수 있도록 하는 직원CustomUserDetailServiceSpring Security가 제공하는 UserDetailsService 인터페이스를 구현하여, 사용자 정보를 데이터베이스에서 가져오는 역할 수행.역할사용자 이름(username)을 기반으로 데이터베이스에서 사용자 정보를 조회.조회한 정보를 Spring Security가 이해할 ..

TIL 2025.02.07

250206 수 TIL

프론트에서 서버로 데이터를 보내는 방식헤더(Header) - 부가적인 데이터를 포함.바디(Body) - 본문 데이터를 포함.URL(Query Parameter) - 선택적이며, 노출되어도 문제가 없는 데이터 포함.예제: api/v1/posts?page=1&pageSize=3JPA 레포지토리와 영속성 컨텍스트https://goanfvkdl.tistory.com/314 Spring Securityhttps://goanfvkdl.tistory.com/315 Spring SecuritySpring Security란?Spring Security는 애플리케이션의 보안(인증 및 권한 관리)을 담당하는 프레임워크.비유: 외부 인력이 사내 시스템에 접근하는 경우, 보안 정책과 접근 권한을 설정해야 함.Spring Sec..

TIL 2025.02.06

Spring Security

Spring Security란?Spring Security는 애플리케이션의 보안(인증 및 권한 관리)을 담당하는 프레임워크.비유: 외부 인력이 사내 시스템에 접근하는 경우, 보안 정책과 접근 권한을 설정해야 함.Spring Security 설정 예제@Configuration@EnableWebSecuritypublic class SecurityConfig { @Bean SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRe..

Java/Spring 2025.02.06

Servlet, Dispatcher Servlet, Servlet Container

서블릿(Servlet)이란?서블릿 개요서블릿(Servlet)은 동적인 웹 사이트를 만들기 위해 웹 서버에서 실행되는 자바 프로그램이다.서블릿을 사용하는 이유HTTP 요청 정보를 쉽게 활용하고, 응답을 편리하게 처리할 수 있음.비즈니스 로직에 집중할 수 있도록 도와줌.서블릿을 처리할 URL을 매핑하면 해당 요청이 들어올 때 자동으로 처리됨.service 메소드만 재정의하여 요청 처리 방식을 지정하면 됨.서블릿과 톰캣(Tomcat)의 관계톰캣(Tomcat)은 서블릿 컨테이너 역할을 수행하는 대표적인 웹 서버.서블릿은 웹 서버에서 실행되며, 톰캣은 서블릿을 실행하고 관리하는 환경을 제공.톰캣이 서블릿 요청을 받아 적절한 서블릿 인스턴스를 실행하고 응답을 반환.서블릿 컨테이너(Servlet Container)서..

Java/Spring 2025.02.02

250120 월 TIL

H2 DB H2는 가볍고 빠른 인메모리 데이터베이스로, 테스트 및 개발 환경에서 주로 사용된다.장점: 설정이 간단하고, 웹 콘솔을 통해 데이터 확인이 가능하다.특징: 파일 기반 또는 메모리 기반으로 동작하며, 기본적으로 SQL 표준을 준수한다.H2 콘솔 접속URL: http://localhost:8080/h2-console위에서 설정한 application.yml의 DB 정보를 입력하여 접속.직접 데이터베이스를 조작 가능. ---  프로젝트 기본 src 폴더 구조ArticleRepositorypackage com.example.jpa.domain.article.repository;import com.example.jpa.domain.article.entity.Article;import org.spring..

TIL 2025.01.20

스프링에서 잭슨 라이브러리의 직렬화/역직렬화

직렬화와 역직렬화란?직렬화객체 데이터를 특정 형식(예: JSON, 바이너리 등)으로 변환해 전송하거나 저장할 수 있게 만드는 과정이다.역직렬화직렬화된 데이터를 다시 객체로 변환하는 과정이다.JSON이나 바이너리 데이터를 애플리케이션에서 사용할 수 있는 객체 형태로 복원하는 작업이다.스프링의 잭슨(Jackson) 을 이용한 직렬화/역직렬화잭슨은 Java Reflection API를 활용해 클래스 정보를 동적으로 읽어들여 분석해서 직렬화/역직렬화를 수행한다.참고 - Java Reflection API란?Reflection API는 실행 중에 클래스, 메서드, 필드 등의 정보를 동적으로 가져오거나 수정할 수 있는 Java의 기능이다.이를 통해 컴파일 시점에 알 수 없는 클래스의 구조를 런타임에 파악하고 조작할..

Java/Spring 2025.01.18

250116 목 TIL

1. 스프링부트Spring Initializr를 통해 프로젝트를 생성할 수 있다.스프링부트는 다양한 어노테이션과 기능을 제공하며, 개발자가 간편하게 애플리케이션을 만들 수 있도록 도와준다.2. 스프링부트에서 Jackson스프링부트에는 Jackson이 내장되어 있어 JSON화 되어 오가는 데이터의 직렬화와 역직렬화에 사용된다.REST API 응답 시 객체를 JSON으로 변환하거나, JSON 요청을 객체로 변환할 때 자동으로 동작한다.Jackson 주요 어노테이션@JsonProperty: JSON 필드와 Java 필드를 매핑.@JsonIgnore: 특정 필드를 직렬화/역직렬화에서 제외.@JsonFormat: 날짜 및 시간 형식을 지정.3. 스프링부트 주요 어노테이션@Component스프링이 이 클래스를 식별..

TIL 2025.01.16