스프링 부트
-
Spring Boot - 프로젝트 구조 알아보기Framework & Library/Spring Boot 2022. 1. 29. 20:51
스프링 부트의 프로젝트 구조 src/main/java 디렉터리 - 클래스, 인터페이스 등 자바 파일이 위치하는 디렉터리이다. - 스프링 부트 프로젝트를 생성하면 우리가 생성하지 않은 SpringBootStudyApplication 클래스가 포함되어 있다. - 해당 클래스는 main() 메서드 하나만 선언되어 있으며, main() 메서드는 SpringApplication.run()을 호출해서 웹 애플리케이션을 실행하는 역할을 한다. 애너테이션 설명 @EnableAutoConfiguration 해당 애너테이션에 의해 스프링 부트 개발에 필요한 몇 가지 필수적인 설정들이 자동으로 완료된다. @ComponentScan 해당 애너테이션에 의해 자동으로 컴포넌트 클래스를 검색하고 빈으로 등록한다. @Configur..
-
Board - Interceptor, AOP, TransactionProjects/Problem & Solution 2021. 11. 6. 19:50
Interceptor 적용 인터셉터(Intterceptor)란? 인터셉터는 컨트롤러의 URI에 접근하는 과정에서 무언가를 제어할 필요가 있을 때 사용된다. 예를 들어, 회원제로 이루어지는 시스템이 있다고 가정했을 때, 로그인이나 계정의 권한과 관련된 처리 등을 인터셉터를 이용해서 더욱 효율적으로 처리가 가능하다. 1. LoggerInterceptor 클래스 생성 @Slf4j public class LoggerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exceptio..
-
Spring Boot - AOPFramework & Library/Spring Boot 2021. 9. 23. 18:04
AOP AOP의 필요성 - 모든 메서드의 호출 시간을 측정하고 싶은 경우를 생각해본다. - 해결 방법은 위 사진과 같이 각 계층마다 시간을 측정하는 로직을 작성하는 방법이 있다. - 이때, 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 코드가 복잡해지고 유지보수가 어려워진다는 문제점이 발생한다. - 핵심 관심 사항(핵심 비즈니스 로직)과 공통 관심 사항(시간을 측정하는 로직)을 분리함으로써 이러한 문제점을 해결할 수 있다. AOP를 통한 해결 - 위 그림과 같이 핵심 관심 사항(핵심 비즈니스 로직)과 공통 관심 사항(시간을 측정하는 로직)을 분리한다. - 시간을 측정하는 로직을 공통 로직으로 만든 후 원하는 적용 대상을 선택해 준다. - 이와 같이 공통으로 처리해야 하는 기능들을 별도로 분리함으로..
-
Spring Boot - 사용자 입력 데이터 처리Framework & Library/Spring Boot 2021. 9. 23. 17:56
사용자 입력 데이터 처리 회원 등록 폼 HTML 이름 등록 - 사용자가 이름을 입력할 수 있는 폼 형식의 HTML 파일이다. - input 태그에 이름을 입력하고 등록 버튼을 눌렀을 때, "/members/new" 주소에 POST 방식으로 전달된다. 웹 화면에서 데이터를 전달받을 폼 객체 public class MemberForm { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } - 사용자가 입력한 이름 데이터와 매핑할 객체이다. 컨트롤러를 통한 데이터의 처리 @PostMapping(value = "/members/new") public S..
-
Spring Boot - IoC와 DIFramework & Library/Spring Boot 2021. 9. 23. 17:54
IoC(Inversion of Cotainer) IoC란? - IoC는 Inversoin of Container의 약자로, 제어의 역전이란 의미를 가지고 있다. - 제어의 역전이란 객체의 생명주기 관리를 컨테이너가 도맡아, 제어권이 개발자에서 컨테이너로 넘어가게 되어 제어권의 흐름이 바뀌었다는 것을 뜻한다. - 즉, 개발자가 직접 new 키워드를 통해 인스턴스를 생성하고, 메서드를 호출하는 작업들을 스프링에 위임하는 것이다. DI(Dependency Injection) DI란? - DI란 의존 관계 주입이라 하고, 어떤 객체가 사용하는 의존 객체를 내부에서 직접 생성하는 것이 아니라 외부에서 주입하는 방식을 말한다. DI의 사용 이유 - 객체를 주입받는다는 것은 외부에서 생성한 객체를 넘겨받는 것이기 때..
-
Spring Boot - 스프링 웹 개발 기초Framework & Library/Spring Boot 2021. 9. 23. 17:49
정적 콘텐츠의 동작 과정 1. 웹 브라우저 요청 ex) localhost:8080/hello-static.html 2. 내장 톰캣 서버에서 콘텐츠 탐색 2-1. 우선, 스프링 컨테이너에 접근 → hello-static 관련 컨트롤러가 존재하지 않음 2-2. static 폴더에 접근 → hello-static.html 파일이 존재 3. 브라우저에 hello-static.html 파일을 렌더링 MVC와 템플릿 엔진의 동작 과정 1. 웹 브라우저 요청 ex) localhost:8080/hello-mvc?name=spring 2. 내장 톰캣 서버에서 콘텐츠 탐색 2-1. 스프링 컨테이너에 접근 → 해당 url과 매핑된 컨트롤러가 존재 2-2. 모델이 전달받은 데이터를 처리한 후, 템플릿 이름을 반환 2-3. v..