스프링 6

스프링에서 자주 사용하는 기본 @어노테이션 정리

@ 어노테이션이란? 어노테이션의 사전적 의미는 주석이지만 Java에서는 그 이상의 메타 데이터 역할을 한다. 어노테이션을 선언하여 특수한 기능을 사용할 수 있다. @Component 스프링에서 관리하는 객체임을 표기하는 가장 기본적인 범용 스테레오타입 어노테이션. 스프링 빈으로 등록시키는 역할을 수행. Application Context에서 스프링 빈을 등록할 때, 빈으로 등록할 후보 클래스들을 탐지하여 등록한다. 에서는 @Component만 스캔하도록 되어있다. 당연하게 쓰던 어노테이션을 따라가서 소스를 살펴보자.... ex) @Controller @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Component public @inte..

Spring DI 스프링 의존성 주입 3가지 방법

Spring DI 스프링에서 의존성 주입(DI)이란, 객체간 의존성을 개발자가 객체 내부에서 직접 호출(new연산자)하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 외부에서 두 객체 간의 관계설정을 해주는 디자인 패턴으로, 인터페이스를 사이에 두어 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, 런타임 시 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 한다. public class Controller{ private Service service; service.test(); } } 다음과 같이 Controller객체가 Service객체를 사용하고 있는 경우, Controller는 Service에 의존성이 있다고 할 수 있다. 의존한다는 것은 의존대상, 여..

스프링 Service에서 ServiceImpl를 사용하는 이유 ?

스프링 Service에서 ServiceImpl를 사용하는 이유? 대부분의 스프링 프로젝트에서 서비스를 구현할때 Service.java를 인터페이스로 만들고, ServiceImpl 이라는 구현체 클래스를 생성하여 사용한다. 왜 인터페이스와 구현체를 따로 두어 사용할까? ex) MemberService / MemberServiceImpl 1. OOP의 다형성, 개방-폐쇄 원칙 이론상으로는 인터페이스-구현체 패턴으로 설계하는 이유는 인터페이스와 구현체를 분리함으로써 구현체를 독립적으로 두고, 구현체 클래스를 변경하거나 확장해도 이를 사용하는 클라이언트의 코드에 영향을 주지 않도록 하기 위함. 이와 같은 추상화를 통한 구현방식은 객체지향의 특징인 다형성과, 개방-폐쇠원칙(OCP)을 지향하는 설계방식이다. 2.A..

[Spring] @RequestBody / @ResponseBody 어노테이션 이란?

스프링에서 비동기 처리를 하는 경우 @RequestBody , @ResponseBody를 사용한다. 비동기 처리를 위해 이 어노테이션들은 어떻게 작동할까? 클라이언트와 서버의 비동기 통신 클라이언트에서 서버로 통신하는 메시지를 요청(request) 메시지라고 하며, 서버에서 클라이언트로 통신하는 메시지를 응답(response) 메시지라고 한다. 웹에서 화면전환(새로고침) 없이 이루어지는 동작들은 대부분 비동기 통신으로 이루어진다. 비동기통신을 하기위해서는 클라이언트에서 서버로 요청 메세지를 보낼 때, 본문에 데이터를 담아서 보내야 하고, 서버에서 클라이언트로 응답을 보낼때에도 본문에 데이터를 담아서 보내야 한다. 이 본문이 바로 body 이다. 즉, 요청본문 requestBody, 응답본문 respons..

[java spring] ModelAndView 모델앤뷰 / ViewResolver뷰리졸버 란 ?

ModelAndView컨트롤러 처리 결과 후 응답할 view와 view에 전달할 값을 저장 및 전달하는 클래스 1 주요 생성자생성자역할ModelAndView(String viewName)응답할 viewModelAndView(String viewName, Map values)응답할 view와 view로 전달할 값들을 저장한 Map 객체ModelAndView(Stirng viewName, String name, Object value)응답할 view이름, view로 넘길 객체의 name 과 value2 주요 메소드메소드역할setViewName(String view)응답할 view이름 설정addObject(String name, Object value)view에 전달할 값을 설정addAllObject(Map ..

[Spring Boot] 스프링 부트 MVC 기본 환경설정

스프링 부트 MVC 기본 환경설정 Project 소스구성 메인클래스: DemoApplication.java 프로퍼티파일: application.properties 환경설정파일: pom.xml >스프링 부트 기반으로 프로젝트 생성시 기존의 전통적인 웹어플리케이션 방식에서 필수로 관리 되어야 하는 톰캣설정 및 web.xml파일 등은 스프링 부트의 내부모듈에 의해서 구동시 자동설정 한다. 어플리케이션 실행 *프로젝트 생성시 application.properties 파일이 자동생성되며 빈 파일로 생성된다. 사용자가원하는 DB 드라이버 라이브러리설치와 jdbc설정 필요. *당장 결정이 안된경우 메인클래스에 Auto Configuration 작업중 DataSource설정 부분을 제외 시킬 수 있다. @EnableA..