🍀 스프링 설치하기
- JDK11을 다운로드(충돌 방지) 후 설치
JDK11 다운로드
- Spring 다운로드 후 설치
spring 다운로드
- spring-workspace 폴더 만들어 workspace폴더 지정
- 기본 설치된 서버 지우고 apache tomcat으로 재설정
- 프로그램 종료 후 스프링 폴더의 STS.ini 파일에 아래 내용 추가
-vm C:\Program Files\Java\jdk-11\bin\javaw.exe(jvm경로를 넣는다)
- window -> preference에서 encoding 검색 후 모든 인코딩 설정을 'UTF-8'로 변경
- File -> new -> SpringLagacyProject 선택
- SpringMVCProject 선택 후 next화면에서 아래처럼 com.mycompany.myapp 형태로 작성
- 프로젝트 폴더에 빨간 엑스 나올 때 : 프로젝트 우클릭 -> Maven -> update project 실행
🍀 스프링 프레임워크
- 자바를 이용해 웹 애플리케이션 서버 개발을 효율적으로 진행하기 위한 프레임워크
- 다양한 디자인 패턴 및 기능들이 미리 구현되어 있기 때문에 효율적으로 개발을 진행할 수 있다
🌼 프레임워크(Framework)
- 프로젝트 개발에 효율적인 구조를 미리 만들어 놓은 것(PPT 템플릿 같은 것)
- 개발자는 이미 완성된 구조에 빈칸을 채우는 느낌으로 프로젝트를 진행할 수 있다
- 전체적인 구조(디자인 패턴 등)에 대한 지식이 없는 초보 개발자들도 프로젝트에 투입할 수 있다는 장점이 있다
- 일정 수준 이상의 품질이 항상 보장된다
- 개발 비용이 많이 절감된다
🌼 스프링의 특징
1. POJO (Plain Old Java Object)
- JSP처럼 새로운 공부가 필요한 문법들의 사용을 지양한다
- 백엔드에 JSP 코드가 섞이는 것은 바람직하지 않으며 순수 JAVA코드로 작성되어야 한다
- 익숙치 않은 별도의 API를 최대한 배제하여 개발자의 혼란을 최소화 한다
2. 제어의 역전(IoC, Inversion of Controll)
- 개발자가 객체를 생성하는 것이 아니라 스프링이 객체를 만들고 메서드를 호출한다
- 객체의 생성과 관리를 개발자가 하는 것이 아니라 스프링 프레임워크가 대신한다
3. 의존성 주입(DI, Dependency Injection)
- 외부에서 객체를 주입받아 사용하는 것
- 생성자를 아예 사용하지 말자 (생성자로 인해 유지보수 비용이 증가)
- 프로젝트 내부의 생성자 사용을 모두 제거하여 객체간의 결합도를 낮출 수 있다
※ 결합도가 높다 -> 하나 수정하면 빨간 줄이 100개 뜬다
※ 결합도가 낮다 -> 객체 하나 수정해도 거의 문제가 안생긴다
🌼 스프링 프로젝트의 기본 구조
- src/main/java : 자바 코드를 작성하는 곳
- src/main/resources : 자바 코드를 실행할 때 필요한 자원들을 저장하는 곳
- src/test/java : 작성한 자바 코드에 대한 테스트 코드를 작성하는 곳
- src/test/resources : 테스트 코드를 실행할 때 필요한 자원들을 저장하는 곳
- Maven Dependencies : 이 프로젝트가 의존하고 있는 다른 프로젝트들 목록
- webapp/resources : 웹 정적 자원들을 보관하는 곳
- webapp/WEB-INF/spring/appServlet/servlet-context.xml : appServlet(디스패처 서블릿)의 초기화 파라미터들을 정의하는 곳(지역 초기화 파라미터, ServletConfig)
- webapp/WEB-INF/spring/root-context.xml : 전역 초기화 파라미터들을 정의하는 곳(전체 초기화 파라미터, ServletContext)
- webapp/WEB-INF/views : 뷰 페이지(.jsp)들을 보관하는 곳
- webapp/WEB-INF/web.xml : 서버 설정 파일
- pom.xml : 메이븐 프로잭트에서 사용하는 설정 파일
🍀 스프링 인코딩설정
- web.xml에 다음 내용을 추가 후 서버 재시작
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>appServlet</servlet-name>
</filter-mapping>