Spring Framework(스프링 프레임워크 : 필기 + 다운로드 및 환경설정
*반드시 외워야할 개념 : 1. DI (Dependency Injection) 의존성 주입 2. IoC (Inversion of Control) 제어역행 web.xml과 context.xml ~~(자유롭게 이름지음).xml ( 스프링 컨테이너)
웹개발 / 이클립스 EE +톰캣에서 => 스프링프레임워크 + 톰캣 으로 바꿔서 개발하기 준비!
필기 : ---------------------------------------------------------------------------------------------------------------------------------
프레임워크의 개념
프레임워크 뼈대 혹은 틀의 의미를 소프트웨어 관점에서 접근하면 아키텍처에 해당하는 골격 코드이다.
장점)
1. 빠른 구현 시간
- 아키텍처에 해당하는 골격 코드를 프레임워크에서 제공 해준다. 개발자는 비지니스 로직만 구현 하면 된다.
그래서 적은시간에 많은 기능을 구현할 수 있다.
2. 쉬운관리
- 회사마다 같은 프레임워크를 사용하게 된다면 아키텍처가 같으므로 관리가 매우 쉽다.
- 결과적으로 유지보수의 비용이 저렴하다. (표준 프레임워크)
3. 개발자들의 역량 획일화
- 표준 프레임워크 사용으로 숙련 개발자와 초급 개발자간의 업무적인 코드 결과의 갭이 크지 않다.
- 개발자들의 코드 효율
4. 검증된 아키텍처의 재사용과 일관성 유지
- 검증없이 신뢰를 가지고 소프트웨어를 개발하고 , 유지보수 과정에서 왜곡된 개발이 일어날 가능성이 줄어듬.
5. POJO 기반의 프레임 워크
자바 기반의 프레임워크)
Presentation - Struts, Stuts2, SpringMVC 등 : UI Layer 프레임워크 , Struts2는 Filter기반이고 나머지는 Servlet 기반이다.
비지니스 처리 영역: Spring Ioc&DI , AOP : Spring 컨테이너에 동작하는 엔터프라이즈 비지니스 컴포넌트를 개발 할 수 있다.
데이터처리 영역 : Hibernate or JPA , IBatis or MyBatis ORM 프레임 워크 ,데이터 처리 프레임워크
배경)
로드 존슨이 2004에 만든 오픈 소스 프레임워크이다.
EJB를 대신해서 현재까지 가장 인기있는 표준 프레임 워크이다. 전자정부 표준 프레임 워크 기반
특징)
1) 경량 컨테이너 : 스프링은 여러 개의 모듈로 구성이 되어 있으며 각 모듈은 하나 이상의 jar 파일로 구성이 되어 있다.
기본 jar 기준으로 용도에 맞게 얼마든지 추가 확장 할 수 있는 구조이다.
2) 제어 역행 : Ioc & DI
3) 관점지향 프로그래밍 (AOP)
4) 싱글톤 레지스터리가 있어서 스프링 컨테이너에 저장되는 모든 빈들을 기본적으로 싱글톤으로 관리
spring DI(Dependency Injection)란?
■ 의존성(Dependency)
∎ 비즈니스 로직을 수행하기 위해서는 둘 이상의 클래스가 사용되는데, 각 객체는 협업할 객체의 참조를 취득해야할 책임이 있는데, 이것이 의존성이다.
∎ 객체간의 결합도가 높으면 테스트하기 어려운 코드가 만들어진다.
■ 의존성 주입 : 객체들은 객체의 생성 시점에 spring container로부터 의존성을 부여 받게 된다. 즉, 의존하는 객체를 주입받게 된다.
■ 제어역행(IoC : Inversion of Control)
각 객체는 협업할 객체의 참조를 취득해야하는 책임이 있는데, 제어역행은 의존하는 객체를 역행적으로 취득하는 것이다. IoC는 한 객체가 의존성을 가지는 다른 객체의 참조를 취득하는 방법에 대한 책임의 역행이라는 의미를 가지고 있다. IoC를 적용하면 객체들은 어떤 존재에 의해 객체를 생성할 때 의존성을 가지는 객체를 주입받게 된다
∎ org.springframework.context.ApplicationContext
BeanFactory의 기능 외에 자원처리 추상화, 국제화 지원, 이벤트 지원등의 추가 기능을 제공
∙ ClassPathXmlApplicationContext
∙ FileSystemXmlApplicationContext
String configuration = "config/application.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(configration);
|
∙ XmlWebApplicationContext
String[] configuration = new String[]{"config/application.xml", "config/aop.xml"};
ApplicationContext context = new ClassPathXmlApplicationContext(configration);
|
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoadListener
</listener-class>
</listener>
|
WebApplicationContext context = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
|
--------------------------------------------------------------------------------------------------------------------------------------------------------
스프링 다운로드 링크: 전자정부 표준 프레임워크가 4대라서 아래 버전으로 다운을 받았다.
dist.springsource.com/release/STS/index.html
https://dist.springsource.com/release/STS/index.html
Spring Tool Suite 3.9.12 3.9.12.RELEASE (Mrz 12, 2020) Spring Tool Suite 3.9.11 3.9.11.RELEASE (Dez 16, 2019) Spring Tool Suite 3.9.10 3.9.10.RELEASE (Sep 19, 2019) Spring Tool Suite 3.9.9 3.9.9.RELEASE (Jun 18, 2019) Spring Tool Suite 3.9.8 3.9.8.RELEASE
dist.springsource.com
-tern도 다운 ( 자바스크립트 관련 라이브러리)
http://oss.opensagres.fr/tern.repository/1.2.0/
-메이븐 - 라이브러리 다운로드
https://mvnrepository.com/artifact/org.springframework/spring-context/4.3.26.RELEASE
아래 이미지처럼 maven에 해당되는 코드를 복사한 후에 - 스프링 실행 후에 pom.xml란 파일에 붙여 넣는다.
저장을 하는 순간 해당 라이브러리가 자동으로 설치된다.
이외에도
메이븐레지스토리 사이트에서 필요한 라이브러리를 다운받아 pom.xml 에 계속 코드를 붙여넣고 저장하면 된다.
(확인하고 싶으면 라이브러리란 확인)
-WAS : 톰캣 설정하기
스프링프레임워크에서 : 다이나믹 프로젝트 생성 - > 타켓 런타임 설정 후에 다운받았던 톰캣 버전을 클릭
톰캣 설정이 끝난 후에 서버에 톰캣이 생긴다 거기에 있는 server.xml 파일 수정!!
해당 파일에서 connector를 검색해서 찾기= > 아래처럼 인코딩 부분 추가, port는 8080 -> 80으로 바꿔준다
(DB랑 서버충돌 방지)
기타작업
-프로젝트 생성 후 -> 오른쪽 마우스 -> spring-> add spring~~~ 선택
-위와 같이 Spring-> maven 들어간 부분 선택 ( 다운받은 메이븐 라이브러리 활성화)
-configure-> tern 설정 선택 -> 브라우저랑 j 쿼리 전부 선택
이러면 웹 개발할 셋팅 완료
bean 관련 작업: xml 파일 생성시 -> 메이븐 라이브러리 p, context, beans 항상 선택