Spring Maven, Lombok

강정우·2022년 9월 19일
4

spring

목록 보기
1/25
post-thumbnail

구조 설명

  • 원래는 webapp에 route 처럼 다 때려 넣었는데 이제는 WEB-INF/views안에 jsp들을 때려 넣을 것이다.
    scr/main/javaj안에는 각종 controller와 dao를 만들었었다.
    하지만 webapp을 자세히 보면 원래 있던 lib폴더가 안 보이는데 왜냐하면 서비스 할 때 data를 전송하게 되는데 이때 jar 파일을 섬세해서 자주 깨지거나 유실된다. 그래서 이를 방지하기위해 2가지를 분리하였고 대책으로 Maven이 라는 것이 나왔다.

  • 밑에 spring이 핵심 폴더이고 함부로 접근하게 하면 404 error가 난다.
    왜냐하면 WEB-INF가 보안이 걸려있기 때문이다. 따라서 우리는 direct로 들어가는게 아닌 controller로 들어가야한다.
    어떻게? 전체 폴더에서 run as run on server로 실행하면 된다.

  • 기존에 JSP & Servlet의 페이지 이동방식엔 redirect와 forward 방식이 있는데 이땐 forward방식으로 보내야 한다.
    아래가 redirect이고이게 forward 방식이다.그럼 이 2개가 무슨 차이냐? 바로 request 객체가 초기화가 되냐 안 되냐의 차이이다.

  • 하지만 이제 spring에선 POJO를 이용할 것이다. POJO(plain old java object)는 controller처럼 사용하며 별 다른 뜻은 없고 그냥 객체 자체이며 이 POJO를 사용해야 객체지향의 언어로써의 장점을 살릴 수 있다.
    따라서 앞으로 우린 아래와 같이 프로그래밍 할 것이다. 이게 command pattern이며 spring MVC가 이 command pattern의 최종 형태이다.

Maven

webapp안의 lib이 없고 이제 Libraries 폴더에 한방에 관리하게 된는데 이때 Maven Dependencies를 보게되면 maven이 다 알아서 해준다.그럼 어떻게 이 maven이 다 알아서 해주는가?
바로 제일 밑에 있는 바로 요 pom.xml 이 다 알아서 해주는 것이다. XML은 html과 비슷한건데 html은 보여주기 위함이고 xml은 data를 저장하기 위함이다.

  • 이런식으로 이 부분을 설정해주면 전체적으로 알아서 update해준다. 그래서 이렇게 편하니까 maven이라는 관리도구를 쓰는거다
    또한 <dependency> 의 태그를 볼 수 있는데 바로 dependencies(의존성)에 선언되어있다. 즉, 요 <dependency> 하나하나가 jar파일이라고 볼 수 있다.

  • 그러다면 우리가 써야할 모든 lib의 4줄 코드를 다 외워야 하는가? 그건 아니다. 바로 maven repository가 다 알려준다.
    바로 요렇게
    클리만 해도 복사가되고 우리가 할 일은 그냥 붙여넣기만 하면 된다.

  • 그리고 또한 JRE가 너무 오래되어 1.8ver으로 update를 해보겠다. 왜냐면 현재의 lib과 호환이 안 될 수 있기 때문이다.
    약 140번째 줄을 보면 <plugin> 태그로 감싸져 있는 것이 JAVA version을 나타내는 것이고 이를 강제로 update하기 위해 다음과 같이 진행해주면 된다.

  • Spring의 또다른 장점으로 매우 무거운 Servlet을 안 써도 된다는 장점이 있는데 위 코드가 Servlet을 자동으로 만들어준다.

  • 여기서 / 가 모든 요청을 받겠다라는 뜻이며 요게 frontcontroller를 자동으로 만들어준다. 원래는 interface도 만들어야 하는데 이건 안 만들어도 된다.

  • 다음 코드를 보면 return만 있는데 어떻게 url이 작동될까 궁금증이 생기게 된다. 비밀은 바로 이녀석에게 있다. 안을 보면 이러한 코드를 볼 수 있다. <!-- Dao dao = new Dao(); --> 요걸 대신해준다 즉, 객체를 대신 생성해준다.
    prefix(접두어), suffix(접미어)이 바로 앞뒤로 경로를 붙여주기 때문이다.

lombok

lombok library 설치

  • VO를 만드는 데 있어서 편하게 만들어주는 lib가 있다. 바로 lombok이고 이는 공홈에서 받을 수 있다. 파일을 받게되면 jar파일로 받게되는데
    jar 파일은 코드의 압축파일인데 이를 풀겠다고 그냥 더블클릭하면 에러가 날 수 있다. 따라서 cmd 창에서 실행시키는 것이 가장 안전하다.
    이렇게! 당연하게도 실행이 되기 위해서 해당 위치로 옮겨야 하기에 cd 를 이용하였다.

VO 생성

  • 자 이제 편하게 VO를 만들어보자 와 @data 를 치니까 그냥 바로 getter, setter mothod를 만들어줘버리네?! 그냥 field값을 만들어주면 알아서 getter, setter을 만들어준다. 즉, 유지 보수 소요가 매우 줄어든다.
    이렇게 c가 붙어있는 것은 constructor이다. 이때 원하는 field값만 뽑아서 constructor를 만들어주고 싶다면 @NonNull 요걸 붙혀주면 된다.

Controller Class 생성

  • 태그 lib : 라이브러리기 때문에 원래는 설치를 해야하는데 Spring으로 시작하면 자동으로 설정되기 때문에 선언만 하면 된다.
    요걸 적어줘야한다. core는 기본적인 for문이나 if문들이 들어가있는 것이다. 그런데 그냥 써버리면 디자이너 애들이 이게 java인지 html인지 몰라서 접두어를 꼭 붙혀줘야한다.

  • 다음은 tag lib의 forEach 문이다. 여기 items에 변수가 들어가 있는데 여기서 index처럼 한개씩 꺼내서 board에 담는다.

  • 그러면 이게 이렇게 되는데 DB에서 나오는 것이기 때문에 EL을 적어야한다. EL에서는 getter method가 없고 . 하나로 다 퉁쳤다.

  • request도 servlet처럼 매우 무겁다. 그런데 단지 setAttribute 메서드를 쓰기 위해 무거운 request를 전부 import하는 것은 매우 부적합하다 따라서

  • model은 이렇게 spring에서 제공하는 interface를 import해야한다. 또한 이 model을 써도 request랑 똑같이 request 영역에다가 저장을 시킨다.
    따라서 매우 효율적이다고 볼 수 있으며 주의점은 setAttribute가 아닌 addAttribute이다.

이제 객체바인딩 : model에 add Attribute을 했구나~ 라고 이해하면 된다.

WAS (Web Application Server)

정의: 웹 애플리케이션 서버(WAS)는 웹 기반 애플리케이션을 실행하기 위한 소프트웨어 프레임워크이다.
웹 서버와의 차이점은 웹 서버가 정적인 컨텐츠를 처리하는 반면, WAS는 동적인 컨텐츠를 처리할 수 있다는 점이다.

즉, 사용자의 요청에 따라 실시간으로 페이지를 생성하고 데이터베이스와의 상호작용 등 복잡한 비즈니스 로직을 처리할 수 있다.

사용 예: Java EE, ASP.NET, PHP 등 다양한 플랫폼에서 사용.

스프링 vs 스프링 부트

스프링은 tomcat WS 1개에 WA이 쭉쭉 올라가는 구조이다. 그래서 포트도 각각 다 따로 잡아줘야만 한다.
하지만 스프링 부트는 tomcat 이 WA 마다 각각 따로 돌아간다. 따라서 tomcat 에 각각의 WA 마다 설정을 잡아줘야하는 수고가 없어서 훨씬 개발이 편하다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글