전자 정부 프레임 워크
Java8 등록
Lombok Plug-in 설치
File > New > Project ... > eGovFrame > eGovFrame Web Project
Deployment Descriptor(web.xml) 생성
Java EE Tools
Generate Deployment Descriptor Stub 선택
pom.xml 수정
pom.xml 내용 추가
<dependencies>
<!-- 서블릿 4.0 의존 설정 -->
<!-- 참조: https://tomcat.apache.org/whichversion.html -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<!-- 최종 산출물에는 포함되지 않음 -->
<scope>provided</scope>
</dependency>
<!-- JSP 2.3 의존 설정 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<!-- 최종 산출물에는 포함되지 않음 -->
<scope>provided</scope>
</dependency>
<!-- JSTL 1.2 의존 설정 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Logging log4j-slf4j2 의존 설정 -->
<!-- src/main/java/log4j2.xml 파일 생성 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.20.0</version>
</dependency>
<!-- Lombok 의존 설정 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<!-- Spring Framework 설정 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.29</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.29</version>
</dependency>
</dependencies>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Out" target="SYSTEM_OUT">
<PatternLayout pattern="%-5level: %logger{36}.%M() - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.mycompany.springwebapp" level="info" additivity="false">
<AppenderRef ref="Out"/>
</Logger>
<Root level="error">
<AppenderRef ref="Out"/>
</Root>
</Loggers>
</Configuration>
IoC(Inversion of Control:역제어) 컨테이너
스프링에서 제공하는 IoC 컨테이너
WebApplicationContext
ContextLoaderListener 설정
DispatcherServlet 설정
IoC 관련 Annotation
<context:component-scan base-package=“com.mycompany”/>
base-package=“”: Annotation을 찾을 시작 패키지(하위 패키지 모두 검색)
use-default-filters=“true”: 아래 Annotation을 찾아 관리 빈으로 자동 생성
@Controller, @Service, @Repository, @Component
<context:include-filter>: 관리 빈 생성에 포함될 Annotation 지정
Root WebApplicationContext 설정 파일(ch01-component-scan.xml)에서 작성
<context:exclude-filter>: 관리 빈 생성에서 제외될 Annotation 지정
DispatcherServlet WebApplicationContext 설정 파일(ch01-component-scan.xml)에서 작성
빈 생성 및 소멸 관련 @Annotation 자동 인식
@PostConstruct, @PreDestroy
의존성 주입 관련 @Annotation 자동 인식
@Resource, @Autowired, @Inject, @Value
MVC 관련 Annotation
HomeController 수정
/WEB-INF/views/home.jsp 작성
실행
Controller
컨트롤러 역할을 할 클래스에 @Controller 어노테이션 적용
컨트롤러 빈을 생성해서 싱글톤으로 관리
기본 생성자를 이용해서 객체 생성
샘플: Ch01Controller.java
View
[참고] Context Root(Path) 변경
springframework > 마우스 우클릭 > Properties > Web Project Settings
Context root: /
Servers 뷰 > Tomcat 중지 > Tomcat 삭제 > Tomcat 재추가
springframework > 마우스 우클릭 > Run As > Run On Server
[참고]
Maven Update시 Context Root는 pom.xml의 로 재설정됨
POM: Project Object Model
POM 파일을 구성하는 요소
http://maven.apache.org/pom.html#What_is_the_POM 참조
Eclipse Maven POM Editor
중앙 저장소(Central Repository)
사내 원격 저장소
로컬 저장소(메이븐 빌드시, 또는 pom.xml 파일에서 의존 라이브러리 설정시)
Spring Framework 버전 선택
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions
Spring Framework의 모듈(라이브러리, jar) 종류
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Artifacts
Spring Framework Documentation
https://spring.io/projects/spring-framework#learn
Spring Web MVC Documentation
https://docs.spring.io/spring/docs/5.2.8.RELEASE/spring-framework-reference/web.html#spring-web