부트캠프에서 처음으로 java수업을 받고 있기에 기록하는게 좋다고 생각했고, 수업이 있는 날이면 매일 글을 쓰려고 합니다. 쵀대한 몰랐거나 필요하다고 생각되는 내용 위주로 기록할 예정입니다. (제가 게을러서 이러한 시도를 성공한 적이 없기에 이번 부트캠프 목표 중 1가지입니다. 할 수 있도록 화이팅!!)
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
spring boot 사이트"Spring Boot를 사용하면 "실행만 하면 되는" 독립 실행형 프로덕션 등급 Spring 기반 애플리케이션을 쉽게 만들 수 있습니다." (번역)
자동 구성과 스타터 의존성(starter dependency)을 통해 필요한 라이브러리와 설정들을 미리 묶어 제공함으로써, 최소한의 설정만으로 시작할 수 있기에 개발 초기 설정 시간을 단축시키고, 설정 오류를 줄이는 데 도움을 준다.
내장 웹 서버(Tomcat)를 제공하기 때문에, 애플리케이션을 실행하는 것만으로도 웹 서버가 함께 구동된다.
의존성 관리는 pom.xml 또는 build.gradle 같은 빌드 파일에서 간단한 형태로 작성된다. Spring Boot는 자주 사용되는 라이브러리에 대한 기본적인 의존성을 자동으로 제공하며, 개발자는 필요시 간단하게 의존성을 추가할 수 있다.
📝 Spring은 자바 기반의 엔터프라이즈 애플리케이션을 개발하기 위한 프레임워크로, 제어의 역전(IoC)과 의존성 주입(DI)을 핵심 개념으로 한다. 이러한 Spring을 개발할때 복잡성이 생기고 이것을 해결하기 위해서 Spring Boot가 만들어졌다.
ViewResolver는 Spring에서 클라이언트의 요청을 처리한 후, 어떤 view를 사용자에게 반환할지를 결정하는 역할을 하는 인터페이스로, 데이터를 API 형태로 제공하길 원한다면 View Resolver를 통해서 프론트엔드 프레임워크로 보내지 않고, JSON 형태(Json View 라고 함)로 전달해줄수도 있다. (한국에서 가장 많이 사용하는 Java 프론트엔드 언어인 JSP 페이지로도 보낼수도 있다.)
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/"); // 뷰 파일 경로 앞부분
resolver.setSuffix(".jsp"); // 뷰 파일 확장자
return resolver;
}
위의 설정이 있다면, 컨트롤러에서 "home"이라는 논리적 뷰 이름을 반환하면 실제 뷰 파일 경로는 /WEB-INF/views/home.jsp가 된다.
@Bean
public View someCustomView() {
return new SomeCustomView(); // 특정 뷰 객체 반환
}
뷰의 이름을 Bean 이름과 연결하여 찾는 방식으로, 주로 PDF, Excel과 같은 특수한 뷰를 처리할 때 사용된다. 컨트롤러에서 "someCustomView"를 반환하면 SomeCustomView 객체가 실행된다.
@Bean
public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
return resolver;
}
클라이언트 요청의 Accept 헤더를 보고 적절한 뷰를 선택하는 ViewResolverd이다.
예를 들어, 브라우저에서는 HTML을, API 요청에서는 JSON을 반환하도록 설정할 수 있다.
Spring 프레임워크에서 제공하는 기능 중 하나로, 클라이언트의 요청을 가로채서 처리하는 역할을 한다. 이를 통해 공통적인 로직(로깅, 성능 측정, 캐싱)을 처리하거나, 보안(인증, 권한) 등의 목적으로 특정 조건을 검사하고 해당 요청을 처리하거나, 무시할 수 있다
즉, 컨트롤러(Controller)로 요청이 가기 전 또는 응답이 사용자에게 가기 전에 특정 작업(로깅, 인증, 권한 체크 등)을 수행할 수 있도록 해준다.
📝 interceptor 는 스프링 웹 애플리케이션 컨텍스트에 구성하기 때문에
컨테이너의 기능을 자유롭게 활용할 수 있으며 그 내부에 선언된 모든 빈을 참조할 수 있다