- MVC 정의

Model : 데이터를 관리

View : 눈에 보이는 화면

Controller 요청에 따른 코드 흐름을 제어

 

 

- 데이터 흐름 정의

서버  ->  Controller  ->  Service  ->  DAO  ->  Service  ->  Controller  ->  서버

 

 

- Bean 간단 정의

Bean 설명
@Bean 메서드를 통해 반환하는 객체를 Bean으로 등록
@Component 개발자가 만든 클래스 객체를 생성해서 Bean으로 등록
@Controller Component의 일종
사용자 요청에 따라 자동으로 호출되는 메서드를 가지고 있는 Bean을 등록
@RestController Component의 일종
사용자의 요청에 따라 자동으로 호출되는 메서드를 가지고 있는 Bean을 등록
Resttful API 서버 구성시 사용
@ControllerAdvice 예외가 발생 했을때 사용할 Global Exception Handler로 사용할 Bean을 등록
@Service Controller에서 호출하는 메서드를 가지고 있는 Bean을 정의
@Component로 정의한 Bean과 차이는 없음
@Repository @Service로 정의한 Bean에서 호출하는 메서드를 가지고 있는 Bean을 정의
데이터 베이스와 관련된 작업을 구현
@Component로 정의한 Bean과 차이가 없음
DAO 역할을 한다.

 


- @ComponentScan

특정 패키지를 지정해서 해당 페이지에 @Component라는 이름으로 정의 되어져 있는 클래스들을 객체를 생성해서 Bean으로 등록을 하라는 명령.

 

- Java 프로젝트에서의 컴포넌트 스캔 사용

// 스캔할 패키지를 지정한다.
@ComponentScan("com.example.controller")
@ComponentScan("com.exmaple.dao")
@ComponentScan("com.example.service")
public class ServletAppContext implements WebMvcConfigurer{

- XML 프로젝트에서의 컴포넌트 스캔 사용


- @Component

일반 적인 Bean 정의.

우리가 주입 받아서 사용할 목적으로 만든다.

@Component
public class UserController {

- @Controller

@Component를 이용해서 Bean을 만든 것과 동일 하다. 다만 이 Bean은 Spring MVC에게 Controller 역할을 한다는 것을 알려준 것이다.

@Controller
public class UserController {

SPRING MVC에서 어떠한 요청(예:GET요청)이 발생 했을때 그 요청 정보를 분석 해서 아래와 같이 요청과 매핑되어져 있는 메서드를 자동으로 호출 해준다.

@GetMapping("/login")
public String login() {
    return "user/login";
}

- @Service

@Component 한것과 차이는 없다. 그냥 의미상 Service 역할을 한다는 것을 알려 준 것.

@Service
public class UserService {

- @Repository

@Component 한것과 차이는 없다. 그냥 의미상 DAO역할을 한다는 Bean 이라는 것을 알려 준 것.

DB와 관련된 작업을 구현 한다.

@Repository
public class UserDao {

- @Autowired

사용할 빈을 자동 주입 받는다.

아래에선 Controller에서 사용하기 위해 UserService Bean을 주입 받았다.

@Controller
public class UserController {
	
	@Autowired
	private UserService userService;

 

기본 적인 전체 구조를 한번 더 정리 하자면 @Repository 에서 DB와 관련된 작업을 하고 이것을 @Service 에서 주입 받아서 작업을 한 뒤 @Controller 에게 넘겨 준다.

반드시 이렇게 되는 것은 아니지만 이렇게 코드를 다 분리해서 만들어야지만 추후 유지보수 시에 용이하다.

 

 

+ Recent posts