15주차 - Spring (1) 스프링 코드 작성에 앞서 알아둘 것들

2022. 10. 14. 22:38Spring framwork

이번의 목표

01.Spring Framework란?

02. 스프링에서 .jsp 파일에 접근하는 방법

03. Context:component-scam 적용 어노테이션

04. 자동 주입 어노테이션


01. Spring Framework란?

스프링 프레임워크에 대해 알기전에 먼저 프레임워크(Framework)란 틀, 뼈대, 체계 등을 의미합니다. 즉 기초가 되는 것을 얘기합니다. 스프링 프레임 워크도 이와 마찬가지로 소프트웨어의 개발에 사용되는 뼈대의 역할을 합니다.

스프링 프레임워크에 대해 공부하기전에 알아야할 특징 몇가지만 알아보겠습니다.

 

 1) 첫번째로 알아볼 것은 POJO 입니다.

POJO : Plain Old Java Object 의 약자로 순수한 자바 오브젝트를 뜻합니다. 이 POJO는 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용 될 수 이쓴 방식으로 설계된 오브젝트입니다.

 

 2) 다음으로 알아볼 것은 IoC / DI 입니다.

DI : Dependency Injection 의 약자이며 '의존성 주입' 이라고도 부릅니다.. 앞서 스프링을 설치하면서 pom.xml의 코드를 간단히 알아볼 때, <dependency>, <dependencies> 태그가 있었습니다. 거기서 사용되는 것과 같은 단어입니다.

스프링에서는 객체를 생성할때 new를 사용하여 만들지 않습니다. 스프링에서는 Spring Container에 빈을 생성하여 필요할때 꺼내서 사용하는 방식이기 때문입니다.

 

 3) 마지막으로 알아볼 것은

IoC: Inversion of Control 의 약자이며 '제어 역전' 이라고 부릅니다. 기존에는 개발자가 객체를 관리하고 제어했지만 스프링에서는 스프링 컨테이너(Spring Container)가 이 객체를 관리하고 제어하기 때문에 제어가 역전되었다 하여 제어 역전이라 부릅니다.

02. 스프링에서 .jsp 파일에 접근하는 방법

스프링에서 프로젝트를 생성하면 기본적으로 HomeController.java, home.jsp가 있습니다.

이때에 home.jsp파일에 접근하려고 기존에 접근하던 방식대로 경로를 찾아가면 파일을 찾을 수 없다고 합니다.

왜냐하면 스프링에서는 파일에 접근하는 방법이 기존의 방법과는 다르기 때문입니다.

경로를 찾지 못하는 모습

 

경로를 알아보기 위해서는 우선 HomeController.java 파일을 열어볼 필요가 있습니다.

HomeController.java 코드 화면

제가 강조처리한 줄을 보면 @RequestMapping 이라는 어노테이션이 있습니다.

그리고 value와 method가 지정되어있는 모습을 확인할 수 있습니다.

이때에 저 코드를 코드 초보자인 제가 알아보기 쉽게 풀어보자면

"conText root 주소 아래로 입력된 값이 value의 값인 / 과 같다면 아래의 메서드를 실행하겠다."

라고 설명할 수 있습니다.

그렇기 때문에 / 만 입력했을때에는 home 으로 찾아갈 수 있는 것 입니다.

 

이때에 어째서 "home"만 입력했는데 home.jsp로 찾아갈 수 있는지 이해가 되지 않는다면

제가 쓴 글에서 servlet-context.xml 을 설명하는 부분을 보면 알 수 있을것 입니다.

해당 링크는 글 최하단에 두었습니다.

 

스프링에서 .jsp파일에 접근하는 방법을 알았으니 / 만 입력했을때의 화면을 확인해보겠습니다.

 

localhost:포트번호/cf/ 접속 화면

@RequestMapping에서 정한 값을 입력하니 home.jsp 파일을 찾아가는 것을 확인할 수 있습니다.

기존에는 파일 경로와 파일명만 알면 찾아갈 수 있었었지만,

스프링에서는 @RequestMapping로 지정된 값이 아니라면 파일을 찾아갈 수 없습니다.

 

그리고 이 흐름을 보면 유추할 수 있었겠지만, 사용자가 파일에 접근할때 가장 먼저 사용자가 접근하는 파일은 컨트롤러 파일입니다. 컨트롤러에서 값을 확인하여 매핑된 파일로 연결시켜주는 것이기 때문에 기존에는 바로 파일과 직접 연결되는 형식이었다면 이제는 컨트롤러가 중개자 역할을 하는것과 비슷한 형태를 취하게 됩니다.

 

이러한 흐름을 하나의 표로 보자면 아래의 그림과 같습니다.

 

 

03.  Context:component-scan 적용 어노테이션

스프링에서 프로젝트를 만들면 생성되는 HomeController.java를 보면 생성자에 @Controller 이라는 어노테이션이 있습니다. 이와 같은 역할을 하는 어노테이션들이 몇가지 더 있는데 이것들의 종류는 아래와 같습니다

파일의 이름만으로도 어떤 역할을 하는 파일인지 구분은 할 수 있겠지만 어노테이션을 이용하여 파일을 구분짓는 것이 좋습니다. 여기서 주로 사용되는것은 @Service, @Repository, @Controller이 주로 사용됩니다.

종류를 정하지 못하겠을 때에 가끔씩 사용되는 것이 @Component 어노테이션입니다.

 

04. 자동 주입 어노테이션

자동 주입 어노테이션이란 의존성을 주입하는 어노테이션입니다.

위에서 스프링 프레임워크의 특징으로 DI를 말했습니다. 이때에 의존성을 주입하기 위해 사용되는 어노테이션 입니다.

자동 주입 어노테이션의 종류는 아래와 같습니다.

여기서 주로 사용되는것은 @Autowired 입니다. 

 

자동 주입 어노테이션은 아직까지 사용된 예시를 본적이 없기 때문에

@Autowired의 사용 예시를 만들어보겠습니다.

위에서 MemberService.java 라는 서비스 파일을 만들었습니다.

MemberService.java는 Service 클래스 이기 때문에 @Service 어노테이션을 사용한 점도 확인해볼 사항 입니다.

 

위에서 강조된 부분의 코드는

@Autowired MemberService service;

 

입니다.

이때 부터는 HomeController가 작동하기 위해서는 반드시 MemberService의 객체가 필요하기 때문에 이를 HomeController가 MemberService에 의존한다고 표현할 수 있습니다.

반대로 MemberService는 HomeController가 없어서 독립적으로도 사용될 수 있기 때문에 의존하지 않는다고 표현할 수 있습니다.

그리고 이 의존성을 연결해주는 것이 바로 @Autowired 어노테이션 입니다.

 


 

15주차 - Spring web.xml, servlet-context.xml 에 대해 알아보자

 

 

15주차 - Spring web.xml, servlet-context.xml 에 대해 알아보자

이번의 목표 01.web.xml에 대해 알아보자 02. servlet-context.xml에 대해 알아보자 지난 시간에는 pom.xml에 대해 알아봤습니다. 이번엔 web,xml과 servlet-context.xml에 대해 알아보겠습니다. 두 부분다 사실..

justnothinginhere.tistory.com