스프링 19강 - STS 플러그인 설치

voilà!·2022년 2월 2일
1

JSP 스프링

목록 보기
19/31

Spring은 STS 플러그인 설치해야 함

1. 이클립스 STS 플러그인

  • 현재 자바 버전은 15까지 나온 상태이지만, 주로 8버전(jdk 1.8)이 일반적임
  • 이클립스 2020-09 버전부터는 자바 버전 11 이상을 필요로 하므로 자바 버전 8버전용으로
    마지막 버전인 2020-06 버전을 많이 사용함
  • STS : Spring Tools Suite 플러그인을 이클립스에 설치
  • 스프링 개발시에 필요한 기능들을 support하는 역할

2. Spring -> Spring Legacy Project -> spring MVC Project

  • 일반적인 MVC 프로젝트

3. Maven 메이븐

  • 프로젝트를 생성하고 library를 관리하고 build하는 것까지 프로젝트의
    라이프 사이클(생성-활용-제거)을 관리하는 소프트웨어
  • 자동으로 라이브러리를 쓸 수 있게 해 줌

4. Spring 초스피드 엑기스 간단 정리

  • pom.xml : 메이븐 프로젝트 빌드 파일
  • 자바 소스 경로는 : src/main/java
  • 정적 리소스 파일 경로는 : src/main/resources
  • web.wml : 웹 컨테이너(톰캣) 설정 파일
  • servlet-context.xml : 스프링 웹 설정 파일
  • root-context.xml : 스프링 설정 파일
  • views 폴더 : 뷰 파일(jsp) 경로

5. 로그 레벨 설정

  • FATAL : 아주 심각한 오류 발생
  • ERROR : 요청 처리 중 문제 발생
  • WARN : 실행에는 문제 없음. but, 향후 오류의 원인이 될 수 있을 때 경고
  • INFO : 어떠한 상태변경과 같은 정보성 메시지
  • DEBUG : 개발 시 디버그 용도
  • TRACE : 상세 이벤트 발생 시 알려줌

ex) <level value="info" />면 Fatal부터 info까지 나옴

<STS 플러그인 설치 방법>

  1. Help - 이클립스 마켓플레이스 - spring tools 3 검색
    Standalone Edition 설치 - Confirm - finish

  2. Spring Legacy Project - Spring MVC Project 생성 후 properties - java build path - java system library - edit -
    메인 environment 클릭 - JavaSE-1.8 클릭 - apply

  3. alternative도 JavaSE-1.8 맞는지 확인 후 apply

  4. project facets - Dynamic web module 3.1로, java 1.8로 변경

  5. developmet assembly add 아무것도 없는거 확인하고 apply

  6. 상단 window - preference - encoding 검색해서 UTF-8확인

  7. pom.xml (Maven 프로젝트 설정하는 파일)
    <org.springframework-version>5.2.5.RELEASE</org.springframework-version> 로 바꾸기
    <java-version>1.8</java-version>로 바꾸기

  8. 프로젝트 우클릭 RunAs - 4번 클릭
    Goals 에 compile 입력 - apply - run
    [INFO] BUILD SUCCESS 뜨면 성공!


  9. 하단 server 에서 JSPBOOK remove

  10. Tomcat 우클릭 Add and Remove - 방금 만든 프로젝트 add하고 finish

  11. 서버 더블클릭 modules - root path 바꾸기
    edit 눌러서 /만 남기고 저장
    (스프링에서 /는 WEB-INF의 views 폴더를 말한다)

  12. sevlet-context.xml 확인
    여기서 path를 설정할 수 있음
    @controller설정 시 controller가 됨
    prefix가 앞, suffix가 뒤로 합쳐진다.
    ->ViewResolver (controller에서 리턴되는 파일명 앞 뒤로 합쳐지는 값)
    -> resources(img,js파일 등을 저장하는 장소)는 직접 접근이 가능하지만 views는 보안때문에 접근불가!

  13. 자동으로 UTF-8 설정해서 인코딩하는 번거로움 없애기
    web.xml 수정(https://homesi.tistory.com/entry/Spring%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%EB%B0%A9%EC%A7%80%EB%A5%BC-%EC%9C%84%ED%95%B4-webxml%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80-%EC%84%A4%EC%A0%95)
    아래와 같이 한글 설정 추가 후 톰캣 재기동하기

  14. log4j.xml 수정

숙제! 스프링 삼각형에 대한 이해 후 개념 발표

POJO (Plain Old Java Object) 순수한 자바로 작성된 객체
과거에는 자바로 웹 어플리케이션을 개발하기 위해 Servlet 클래스를 상속받아서 사용했음
스프링은 Servlet 클래스를 작성하지 않고 POJO만으로 웹 어플리케이션을 개발할 수 있다.

스프링 삼각형 = 스프링의 3대 프로그래밍 모델
1. IoC/DI
제어의 역전/ 의존성 주입

프로그래밍에서 의존성이란?
운전자는 자동차를 생산한다. = new Car()
자동차는 내부적으로 타이어를 생산한다. = Car 객체 생성자에서 new Tire();

Car 객체 생성자에서 new를 실행함으로 Car가 Tire에 의존한다.
->여기서 new 라는 키워드는 의존성이라고 할 수 있다.

의존 관계를 어떻게 맺냐에 따라 강한 결합인지, 느슨한 결합인지 구분됨

1) 강한 결합 : 객체 내부에서 다른 객체를 생성하는 것
ex) A라는 클래스 내부에서 B라는 객체를 직접 생성하고 있을 때
B객체를 C객체로 바꾸고 싶은 경우 A 클래스도 수정해야 한다.
위에서 설명한 new 키워드처럼!

2) 느슨한 결합 : 외부에서 생성된 객체를 인터페이스를 통해서 넘겨받는 것
의존성 주입으로 결합도를 낮추어 유연성과 확장성을 향상시킨다

의존성 주입(Dependancy Injection)
스프링에서 어떻게 의존성을 주입하는지?

여기서 빈(Bean) : Spring IoC 컨테이너가 관리하는 자바 객체

스프링에서는 XML 설정 파일들이 존재할 뿐만 아니라 Bean을 관리하게 되는데,
개발자가 코드에서 생성할 Bean을 XML 파일에 등록하여 의존성을 주입할 수 있다.

의존성 주입 3가지 방법
1) Field 주입
스프링 초창기부터 현재까지 사용되는 방법으로, 멤버 객체에 @Autowired를 붙여주면
스프링 프레임워크에서 알맞은 클래스를 기반으로 만든 Bean을 주입받는다

2) Setter 주입
setter 메소드 위에 @Autowired를 선언하게 되면, setter 메소드의 파라미터에 해당하는 객체에
Bean을 주입받는다

3) Constructor 주입
스프링 프레임워크에서 추천하는 방법
클래스 생성자에 Bean들을 파라미터로 주입받는 방법
Field 주입과 Setter 주입에서 사용하지 못하는 final 키워드를 붙일 수 있다.

3가지 방법 모두 개발자가 new를 사용하여 객체를 주입하는 것이 아니라 툴이 제어권을 가져
객체를 주입받아 사용한다
-> 제어권이 외부로 역전되었다.(IoC, Inversion of Control)

2. AOP
Aspect-Oriented Programming
관점 지향 프로그래밍

여러 개의 핵심 비즈니스 로직 외에 공통으로 처리되어야 하는 로그 출력, 보안처리, 예외처리와
같은 코드를 모아서 처리를 편리하게 해준다.
ex @Transactional 로 트랜잭션 처리를 공통으로 넣어줄 수 있다.

여기서 공통된 코드 = AOP에서 말하는 aspect

Spring AOP는 프록시 패턴이라는 디자인 패턴을 사용하여 AOP를 지원한다.

프록시를 통해 핵심 로직을 구현한 객체에 접근하게 되면 핵심 로직을 실행하기 전, 후에
공통된 기능을 적용하는 방식으로 AOP를 구현한다.

3. PSA
Portable Service Abstraction 일관성 있는 서비스 추상화
어댑터 패턴을 적용해 같은 일을 하는 다수의 기술이
어떠한 데이터 베이스를 사용하더라도 일관성 있는 방식으로 제어할 수 있도록 공통의 인터페이스를 제공하는 것

ex) JDBC는 오라클, MySQL, MS-SQL 중 무엇을 사용하든
Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드 작성이 가능하다.

0개의 댓글