[Spring] webapp 루트 디렉토리 리소스 사용하기
·
개발/Spring
스프링 프레임워크에서 webapp (웹 애플리케이션 루트) 디렉토리 아래의 리소스에 접근하는 방법은 크게 다음과 같다.1. ServletContext를 이용하는 방법 (Low-Level)가장 기본적인 방법으로, 서블릿 API의 ServletContext 객체를 직접 사용.ServletContext는 웹 애플리케이션의 컨텍스트 정보를 담고 있으며, 웹 애플리케이션 루트 디렉토리에 대한 접근을 제공.Java @Controllerpublic class MyController { @Autowired private ServletContext servletContext; // ServletContext 주입 @GetMapping("/getResource") public String getRes..
[Spring] 리소스 접두어
·
개발/Spring
1. classpath:의미: 클래스패스(Classpath)에서 리소스를 찾는다.(ex: 일반적인 maven / gradle 폴더 구조에서는 src/main/java , src/main/resources , src/test/java , src/test/resources   가 클래스패스 루트로 등록 되어 있음)동작 방식:클래스 로더(Class Loader)를 사용하여 리소스를 찾는다.JAR 파일 내부, 클래스패스에 등록된 디렉토리 등에서 리소스를 탐색.classpath: 뒤에 오는 경로는 클래스패스 루트를 기준으로 하는 상대 경로.예시:classpath:config/application.properties: 클래스패스 루트의 config 디렉토리 안에 있는 application.properties 파일을..
리소스에 접근하는 방법
·
개발/servlet
클래스 로더(Class Loader)를 통한 접근: 클래스패스에 있는 리소스를 로드하는 데 사용.ServletContext를 통한 접근: 웹 애플리케이션 환경에서 웹 애플리케이션 루트 디렉토리의 리소스에 접근하는 데 사용.1. 클래스 로더를 통한 접근 (Class Loader)클래스 로더는 Java 클래스를 로드하는 역할을 하며, 클래스패스에 있는 리소스(텍스트 파일, 이미지, 설정 파일 등)를 찾는 데에도 사용될 수 있다.방법:Class.getResourceAsStream(String name):주어진 이름의 리소스를 찾아서 InputStream으로 반환.name은 리소스의 경로를 나타내며, /로 시작하면 절대 경로(클래스패스 루트 기준), / 없이 시작하면 상대 경로(해당 클래스가 속한 패키지 기준)..
[Spring] 스프링에서 리소스에 접근하는 방법
·
개발/Spring
리소스(Resource)는 소프트웨어 애플리케이션이나 시스템이 작동하는 데 필요한 모든 자원 또는 데이터를 의미한다.스프링 리소스 (Resource)스프링 프레임워크에서 "리소스"는 애플리케이션에서 필요로 하는 다양한 종류의 정적 자원을 추상화한 인터페이스 이다. 쉽게 말해, 파일, 클래스패스, URL 등으로부터 데이터를 읽어오는 방식을 통일하여 편리하게 자원을 관리할 수 있도록 돕는 역할 한다.리소스 인터페이스 (org.springframework.core.io.Resource)Resource 인터페이스는 다음과 같은 주요 메서드를 제공.getInputStream(): 리소스의 내용을 읽어오는 InputStream을 반환.exists(): 리소스가 물리적으로 존재하는지 확인.isOpen(): 리소스가 ..
[Spring] 스프링 빈 주입 방법
·
개발/Spring
Spring에서 빈을 주입하는 방법은 필드 주입, Setter 주입, 생성자 주입 세가지가 있다. 1. 필드 주입 (Field Injection)방법: @Autowired 어노테이션을 필드(멤버 변수)에 직접 붙인다.Java @Componentpublic class MyService { @Autowired private MyRepository myRepository; // 필드 주입 // ...} 장점:코드가 가장 간결.단점:강한 결합: MyService 클래스는 MyRepository 없이는 테스트하기 어렵다. (리플렉션을 사용하지 않고는 외부에서 myRepository 필드에 다른 객체를 주입할 수 없음)순환 참조 (Circular Dependency) 문제 발생 가능성: 필드 주입은..
[Spring] 의존성 주입 어노테이션
·
개발/Spring
Spring 의존성 주입 어노테이션 정리:@AutowiredSpring Framework타입(Type)Spring에서 가장 널리 사용되는 의존성 주입 어노테이션.타입을 기준으로 일치하는 빈을 찾아서 주입.동일한 타입의 빈이 여러 개 있으면,NoUniqueBeanDefinitionException이 발생. 이 경우 @Qualifier와 함께 사용하여 주입할 빈을 명시하거나, @Primary를 사용하여 우선순위를 지정할 수 있다.@QualifierSpring Framework이름(Name)@Autowired와 함께 사용되어, 동일 타입의 빈이 여러 개 있을 때 어떤 빈을 주입할지 이름으로 지정.@Autowired가 붙은 필드, 생성자 파라미터, Setter 메서드 파라미터에 함께 사용.@Bean 메서드에도 ..
리스너(Listener)
·
개발/servlet
서블릿 리스너 (Servlet Listener)서블릿 리스너는 웹 애플리케이션에서 발생하는 특정 이벤트(Event)를 감지하고, 이벤트 발생 시 미리 정의된 동작을 수행하는 컴포넌트이다. 리스너를 사용하면 웹 애플리케이션의 라이프사이클, 세션 관리, 속성(Attribute) 변경 등 다양한 이벤트에 대한 처리를 구현할 수 있다.주요 특징이벤트 기반 프로그래밍: 특정 이벤트 발생 시 자동으로 리스너의 메서드가 호출된다.선언적 구성: web.xml (Deployment Descriptor) 또는 애노테이션(@WebListener)을 사용하여 리스너를 등록.다양한 이벤트 유형 지원: 웹 애플리케이션, 컨텍스트, 세션, 요청 등과 관련된 다양한 이벤트를 처리할 수 있다.리스너의 종류 및 역할Java EE는 다양..
필터(Filter)
·
개발/servlet
서블릿 필터 (Servlet Filter)서블릿 필터는 웹 애플리케이션에서 클라이언트의 요청(Request)과 서버의 응답(Response)을 중간에서 가로채서 처리하는 재사용 가능한 코드 컴포넌트이다. 필터를 사용하면 요청 처리 전/후에 공통적인 로직(보안, 로깅, 데이터 변환 등)을 중앙 집중화하여 효율적으로 관리할 수 있다.주요 특징 및 역할요청/응답 가로채기: 클라이언트의 요청이 서블릿/JSP 등 웹 리소스에 도달하기 전, 또는 응답이 클라이언트로 전송되기 전에 필터가 동작.체인(Chain) 형태의 동작: 여러 개의 필터를 연결하여 순차적으로 처리할 수 있다. (필터 체인)재사용성: 필터는 한 번 작성하여 여러 서블릿/JSP에 적용할 수 있다.선언적 구성: web.xml (Deployment De..