반응형 springboot28 [springboot] DI(Dependency injection) DI(Dependency injection)는 클래스가 자신이 필요한 의존 객체(즉, 다른 클래스의 인스턴스)를 스스로 생성하지 않고 외부에서 제공받는 방식입니다. 즉, 의존성(다른 객체)을 주입해줌으로써 객체 간의 결합도를 낮추고, 객체의 생성과 관리의 책임을 외부에 위임합니다. 1. 스프링 부트에서 DI 설정 기본 구조스프링 부트에서 DI를 사용하는 과정은 크게 두 가지 주요 단계로 나눌 수 있습니다:컴포넌트 스캔: @Component 및 그 하위 어노테이션(@Service, @Repository, @Controller 등)을 사용하여 객체를 스프링 컨테이너에 등록.자동 의존성 주입: @Autowired를 사용하여 의존성 객체를 주입받기.스프링 부트는 기본적으로 어노테이션 기반의 설정을 사용하며, 자.. 2025. 1. 12. [springboot] maven VS gradle Maven과 Gradle은 둘 다 빌드 도구로, Java 기반 애플리케이션을 포함한 다양한 프로젝트에서 의존성 관리, 빌드 자동화, 배포, 테스트 등을 처리하는 데 사용됩니다. 하지만 두 도구는 설계 철학, 사용법, 성능 등에 있어 몇 가지 중요한 차이점이 있습니다.아래에서 Maven과 Gradle의 주요 차이점들을 비교하겠습니다.1. 빌드 스크립트 언어Maven:XML을 사용하여 빌드 설정을 정의합니다.pom.xml 파일을 통해 의존성, 플러그인, 빌드 구성 등을 설정합니다.XML은 선언적인 방식이지만 다소 장황하고 읽기 어려운 경우가 있습니다.예시 (pom.xml): org.springframework spring-webmvc 5.3.0 Gradle:**DSL (Domain Specific Lang.. 2025. 1. 12. [spring] servlet-context.xml, root-context.xml, pom.xml, web.xml 차이점 1. root-context.xml의 역할root-context.xml은 애플리케이션 전체에 공통적으로 사용되는 Bean을 정의하는 스프링 설정 파일입니다. 여기에는 비즈니스 로직을 처리하는 서비스(@Service), 데이터 액세스를 처리하는 DAO/Repository(@Repository), 공통적인 유틸리티 등을 정의합니다.예시:서비스 계층 (@Service)데이터 접근 계층 (@Repository)예외 처리, 공통 컴포넌트들 (@Component)root-context.xml 예시 : --> 2. servlet-context.xml의 역할servlet-context.xml은 Spring Web MVC 애플리케이션에서 웹 관련 설정을 처리하는 파.. 2025. 1. 12. [springboot] @LoginUser 어노테이션 SessionUser user = (SessionUser) httpSession.getAttribute("user");@LoginUser 어노테이션은 매번 세션의 저장된 정보를 불러 들이는 위 코드의 중복을 줄여준다.사용법은 아래와 같다. 1) @LoginUser 어노테이션 생성package com.loosie.book.springboot.config.auth;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.PARAMETER)@Retenti.. 2024. 10. 10. [springboot] Spring Security 권한 설정 외 @PreAuthorize로 추가 권한 검사 Spring Security는 Security Config 파일을 통해 접근 제한을 설정할 수 있다.하지만 대부분의 REST API 문서를 보면 userId 와 같이 기본키를 URL에 포함한다.따라서 전달받은 id와 세션에 저장된 id를 비교해 권한 검사하는 것은 선택적이지만 보안을 위해 권장한다.전달 받은 id와 세션의 정보를 비교 하는 방법으로 가장 가독성 있는 @PreAuthorize 어노테이션을 사용하는 방법이 있다.컨트롤러에 @PreAuthorize 어노테이션 사용 예시@RestControllerpublic class UserController { @PreAuthorize("#userId == authentication.principal.id") @PutMapping("/users/.. 2024. 10. 10. [springboot] Spring Security의 /login 요청 시 처리 과정(세션 저장) Spring Security에는 /login과 /logout 요청을 처리하는 메서드(세션저장/세션삭제)가 내부적으로 구현되어 있다. 따라서 개발자는 따로 구현을 하지 않아도 된다. 하지만 어떤식으로 /login POST 요청이 처리되어 세션에 저장되는지 궁금해서 정리해 본다. ① 클라이언트는 아이디와 비밀번호 정보를 담아 서버에게 POST /login 요청 ② 스프링시큐리티의 UsernamePasswordAuthenticationFilter 가 중간에서 아이디와 비밀번호를 추출 ③ 추출한 아이디와 비밀번호를 AuthenticationManager 에게 주면서 인증 요청 ④ AuthenticationManager는 AuthenticationProvider( DaoAuthenticationProvider.. 2024. 10. 9. 이전 1 2 3 4 5 다음 반응형