21.05.13

EDDIE Kim·2021년 5월 13일
1

KH

목록 보기
89/98

Spring


sts라는 IDE를 이용해서 작업해볼예정

sts를사용하여 spring이용가능 : 2번방법 이용예정 sts 다운로드

스프링 프로젝트의 2가지 종류
legacy project : 환경설정 복잡.
starter project : 환경설정 간단. spring boot. 내부적으로 어떻게 돌아가는지 공부하는 용도로는 적합 X
학습용으로 1번방법 이용예정. final project도 legacy project로 진행함.

sts4부터는 legacy 지원x. plugin 설치하거나 sts3써야 가능.

클릭해서 이전버젼 찾기

sts4다운로드 받는대신 3addon(plugin)설치예정.

최신버젼말고 한두단계 이전 다운로드하기
jar(java archive)이라 cmd통해서 설치예정

dev폴더로 간 후 탐색기창에서 cmd치기

이렇게하면 -jar있는 dev폴더로 잡힘

java -jar sp까지 치고 tab키 누르기

파일 자동으로 찾아줌. enter키 누르면

이렇게 자동으로 설치해줌.

SpringToolSuite4.exe 열기

실행될동안 Workspaces폴더에 spring_workspace만들어주기

실행되면 만들어둔 워크스페이스 지정해주기

marketplace열기-help에 있음(Eclipse Marketplace...)

Help>Eclipse Marketplace>sts검색

Spring Tools 3 Add-On for Spring Tools 4 설치. install 버튼 누르면됨.

Keep 말고 Update my install어쩌구 선택. confirm 하고 i accept

잘깔리고 있음. restart now

spring perspective생김. 클릭해서 오픈

이런것들 추가로 할수있음.




인코딩 설정


add

standard vm - next

sts안에 포함된 jre말고 우리껄로 바꿔주기

Directory...열고 java-1.80있는 폴더경로찾아서 폴더선택해주기

finish

추가한거 체크(default 설정해주는것임)


우측에 add버튼 누른후 v9.0 선택후 next

폴더경로찾기. 찾았으면 폴더 선택 버튼누르고 Finish

잘잡힘

메이븐역할 : 필요한 jar파일이 있다면 pom.mxl에 작성해두면 대신 저 경로에 다운받아두고 프로젝트하고 연결.

이렇게 경로 바꿔줄거임.

강사가 준 settings.xml파일을 dev밑에 maven폴더를 만들어서 위치시켜두고

경로복사해두기

settings파일 노트패드로 편집하기

settings태그 밑에 localRepository태그 찾기(jar파일 다운로드해서 위치시켜둘 곳임)
주석부분 밖으로 복사해서 붙여넣기로 빼고, 복사한 경로 사이에 저런식으로 넣어주기. 저장하고 닫기

User Settings에서 Browse눌러서

Maven-User Settings

방금저장한 settings파일 찾아서 선택하면 밑쪽(Reindex쪽)에 만들어둔 경로 잘 찾아줌. Apply클릭

emmet 설치(Help - Install New Software...)


Work with:에 플러그인을 받을 주소 복붙하고 Add...클릭 Name은 Emmet으로 지정할 것. Add클릭

Emmet 체크 next

next

i accept 체크하고 Finish

설치중.

중간에 Install anyway뜨면 누르고 다깔면 Restart now

Emmet생겼음 와우~

twig뒤에 추가해주기

jsp, java에도 Emmet 잘 먹게 입력해줬으면 Apply - Apply and Close해주면 설정 끝~

설정완료(워크스페이스 만들때마다 해줘야함)!!!!


Other...


Navigator추가

스프링이 관리하고 있는 빈을 확인할수 있는 spring exploror위치 옮기기

package exploror, navigator옆으로(5시방향->11시방향)

outline위치 옮기기(1시방향->9시방향)



Problems옆에 Error Log추가 - 오류났을때 디테일한 것들을 확인할수 있음.

작업준비끝~(이것도 워크스페이스 만들때마다 해줘야함!)

Spring 개론


먼저 작성된 코드를 가져다 쓰는 용도 : Library
제시해둔 골격에 맞게 코딩을 해야함 : Framework(Spring, Mybatis, React(프론트단 자바스크립트 프레임워크), Bootstrap(CSS 프레임워크), Django(파이썬) 등등)는 어느개발자가 코드를 만들던간에 동일한 프레임워크를 사용했다면 일정수준이상의 코드품질을 기대할수 있음. 제시한 방법대로 틀안에서 코딩을 해야함!

Library vs Framework의 차이

spring의 특징


IOC의 대표적인 예 : DI
의존성 주입 : 객체를 스프링에서 관리하고 있다가 필요한 곳에 의존객체를 주입받는다.
앞으로 new 뭐시기해서 필드를 채우거나, setter이용해서 값 세팅을하거나 이런거안함. spring이 대신해줄것임.
bean은 spring이 관리하고 있는 객체

controller는 service에 의존하고 있다. 컨트롤러 입장에서 의존객체가 service임.
service는 dao에 의존하고 있다. 서비스 입장에서 의존객체가 dao임.
spring이 의존객체 이제 넣어줄거임. 이걸 개념적으로 DI라고함.

POJO -> 우리가 알고있던 class들을 그대로 사용할수 있다는 뜻.
별도로 뭘 배우지 않고 우리가 알고있는 java 기술들을 그대로 사용하면됨.

Spring은 EJB라는 프레임워크에서 개발되었다고 해도 과언이 아닌데
POJO는 상대적으로 EJB에 비해 POJO 특징이있다라고 생각해도됨.
J2EE 프레임워크 : 자바를 통해 하는 웹개발 프레임워크

★PSA 아주 중요한 Spring의 특징★

부모클래스->자식클래스 : 구체화 | 자식클래스->부모클래스 : 추상화. 추상화부분을 스프링이 해줌.

스프링프로젝트를 만든다는 건 레고판 같은것임. 원하는 기능들을 pom.xml에다가 dependency태그로 추가하고 얼마든지 가져다 쓸수있음.
logging관리를 예로 들어보겠음. log4j 쓰다가 다른거 쓰고싶으면 삭제하고 적용하는 과정을 해야하므로 프로그램이 보수적으로 되는데(바꾸려면 건들게 많아서 잘안바꾸게된다는얘기). slf4j라는 프레임워크만 제어하면 얘가 이런것들을 대신해줌.
slf4j가 4번특징인 '별도의 추상화 레이어 제공'에 해당하는 추상화레이어임.
slf4j만 제어하면 얘가 밑에애들 알아서 관리함.
log4j쓰다가 java utility logging 쓰고싶으면 그냥 바꾸면됨 써져있는 코드는 안바꿔도 됨. so easy~

db쪽도 spring-jdbc만 제어하면 밑에애들 알아서 관리해줌:)
db 프레임워크도 spring-jdbc를 두어 대리로 관리시킨다고 생각하면 됨.
여러 구현체를 손쉽게 바꿔가며 쓰는게 가능해진다!

PSA특징. service랑 dao의 interface 구현해뒀던 것처럼 spring에서 제공해줄 예정

주업무로직과 부가업무로직을 분리한다음 필요할때 끼워쓸수있다.
분리했다가 원하는데다가 갖다가 쓰기가 더 좋아짐.

검은 네모박스 하나하나가 jar파일로 제공되는 것들임.

빨간네모 테두리안에 있는것들을 기본적으로 필요로함. 필수!
위에 나머지는 선택적으로 가져다가 씀. 의존라이브러리라 pom.xml에다가 써두면 메이븐이 알아서 연결시켜줌.
한마디로 스프링은 확장성이 아주 뛰어남.

테스트기능을 지원. Junit을 사용할수있음. but수업때는 안함 시간없어서

SpEL : 스프링표현식

이론은 여기까지 이제 코딩으로 알아보러가봅시다~


was -> web container 우리는 여전히 톰캣 was를 쓸것임.
spring framework -> spring container라고도 부름.
spring-container가 project를 관리

스프링 컨테이너라고 불리는 이유는 우리가 프로젝트에 여러 클래스들을 만들어놨을건데 이런 객체의 관리를 spring container가 해주기때문에 그런것임.
컨테이너가 관리하는 자바객체 : bean
bean부터 공부할것임. 이걸 관리한다는게 도대체 무슨 의미인지?

도입부 끝. start~


Create a Maven project 만들자. legacy이든 starter이든 메이븐을 더 템플릿화한거라고 보면됨.

Create a simple project클릭 next

Group Id : 프로젝트들을 묶어서 관리하기 위함.
Artifact Id : 진짜 이 프로젝트만을 위한 ID.

채워주고 finish

만들고 있음. 시간이 조금 걸림.

잘만들어짐. 자바 버젼이 너무 낮게 잡혀있음. 프로젝트 세팅하러 ㄱ
spring-bean 원클릭 alt+enter

Project Facets - Convert to facetecd form... 클릭

자바 15로 되있는거 1.8로 바꿔주기. Apply

Java Build Path가서 Libraries가서 1.8잘 바껴있는지 체크. good~ 잘바껴있음. Apply and Close

project의 시작은 pom.xml임
필요한것들을 여기에 달라고 하면됨.

지금필요한건 아까 얘기했던것중 이녀석(Context)임! Maven에 가서 달라고하자~

구글검색창에 maven spring-context라고 검색

ㄱㄱ

찾았다 이녀석

최신꺼 안쓸거임. 안정화된(사용빈도높은) 버젼 찾아보기
상호호환도 중요하기 때문에 버젼을 선택할때 꼭 테스트 해봐야함.

5.1.5로 하자 클릭해서 들어간 뒤 복사 pom.xml에 붙여넣기

'<'dependencies'>'
'<'/dependencies'>' 만들고 사이에 복붙하면됨

다운로드 받고있음. 얘는 우리가 아까 설정한

이곳에 받아지게됨. spring-context만 적었는데 내부적으로 사용하고 있는 것들이라 다 다운이 되는 것임.

더 들어가보면 이렇게 필요한것들을 잘 가져왔다고 확인가능함.

패키지 만들기

인터페이스 만들기

잘 만들어짐

얘랑

얘랑 같음. 생략해도됨.
인터페이스안에서 작성할경우 기본이 public에 추상메서드라서 그럼.

인터페이스를 상속한 클래스 만들기 Add버튼 클릭

만들어둔 인터페이스 검색해서 OK

Finish

클래스 잘만들어짐. 추상메서드를 오버라이드해야함.

오버라이드하고 생성자도 하나 만들어주기


같은방법으로 클래스 하나 더 만들기

src/main/resources파일에 spring 설정파일 만들기 (ctrl + n)

spring 검색하고 Spring Bean Configuration File 찾아서 Next

파일네임에 application-context 입력하고 next

beans는 기본으로 잡아줌 버젼까지. Finish누르기

spring 설정파일 생성완료. beans라는 루트태그 하위에 빈을 등록할거임.
기본 네임스페이스는 beans

beans안에 bean태그 만들기

spring 한테 관리해달라고 bean을 등록하는것임.

시작, 종료태그사이에 입력할 내용이없으면 이렇게 줄여서 작성해도됨.

스프링 설정파일에 빈등록완료!

실행하러 메인메서드있는 클래스 만들기(입력값 그대로 작성)

잘 생성됨.

spring project는 앞으로 계속 ApplicationContext를 통해 빈을 관리할예정

의존주입하는 방법

  1. setter 이용
  2. 생성자 이용


이 코드가 있어야 무조건 annotation(@)가 실행된다.

annotation실행방법 3가지
1. 필드
2. setter
3. 생성자

spring legacy project만들기





com.kh : groupID
spring : artifactID
여기서 spring은 context-path로 자동설정됨.

잘 생성됨.

M은 Maven
S는 Spring을 의미함.
메이븐 베이스의 스프링 프로젝트다!

pom.xml열어보면 com.kh.spring이 위에서 적은대로 분리되어 만들어짐

지역서버 만들기














서버생섬과 세팅끝. 켜보기

브라우져에 주소입력

home.jsp에 있던 내용 출력됨.

profile
과거 지상직 / 개발자 지망생

0개의 댓글

관련 채용 정보