[신세계I&C KDT][Spring Boot] #35 용어, Maven (0530)

박현아·2024년 6월 4일
0

신세계아이앤씨 KDT

목록 보기
39/42

Spring 어플리케이션 개발

https://spring.io/projects/spring-boot

Spring Tool Suite (STS)
STS4는 부트만 개발 가능
(https://spring.io/tools)
jar 파일 다운로드
STS3는 프레임워크, 부트 개발 가능함
(https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3)

general > workspace > utf-8
cotent types > text > java properties file > utf-8
java compiler > jdk11로 바꾸기

1. Spring Framework 프로젝트

2. Spring Boot 프로젝트

3. 용어 정리

1) POJO

  • Plain Old Java Object
  • 플랫폼에 독립적인 형태의 클래스를 의미한다
    예> CartListServlet은 의존적인 클래스 (extends Httpservlet 때문에 Tomcat이 설치된 웹개발에서만 사용 가능)
    CartDTO는 독립적인 클래스

2) (Spring) Bean

  • Spring 환경에서 사용되는 POJO 기반의 클래스를 의미한다
    (스프링에서는 클래스 대신 빈이라고 한다)

cf) 서블릿은 소프트웨어인 톰캣 컨테이너/서버가 서블릿 관리 (생성 ~ 소멸)
스프링은 빈/클래스인 IoC 컨테이너가 다른 빈을 관리한다 -> 용량이 작다

  • Java Bean
  • Spring 이전에 사용되었던 이름.
  • EJB ( Enterpries Java Bean )에서 사용했던 명칭

3) IoC Container (Inversion of Control)

https://docs.spring.io/spring-framework/docs/5.2.25.RELEASE/spring-framework-reference/core.html#spring-core 참고 ! 꼭 들여다보기

(1) 개념

IoC (Inversion of Control 제어의 역행) 방법으로 Spring Bean을 관리 (생성~소멸) 한다

(2) 비슷한 용어

Spring Container
Spring Context

(3) 기능

  • Spring Bean을 관리 (생성 ~ 소멸) 및 의존성 설정
    (이전 개발 방식은 클래스를 직접 생성하고 의존성도 직접 설정했음. Spring은 이런 순방향 개발이 아닌 역방향의 개발)

cf) 서블릿에서 의존성 설정하는 방법

  • CartServiceImpl
public class CartServiceImpl implements CartService {

	// DAO 연동
	CartDAO cartDAO;

	public CartServiceImpl (CartDAO cartDAO) {
	this.cartDAO cartDAO;
    
    // public void setCartDAO(CartDAO cartDAO){
	// this.cartDAO =cartDAO;
}
}
  • CartListServlet
CartService service = new CartServiceImpl(new CartDAO()); // 생성자 통해서 의존성 넣기

// service.setCartDAO(new CartDAO()); // 메서드 통해서 넣기

==> CartServiceImpl과 CartDAO 간에 의존성이 생겼고
개발자가 명시적으로 CartServiceImpl에 CartDAO를 생성해서 값을 전달해줌
서블릿에서는 우리가 직접!!!!! 설정해줘야 했다는 게 키 포인트

  • IoC Container의 실체는 Spring Bean이다
    계층 구조로 되어 있음
               BeanFactory (인터페이스)
           |						      |
 XXXApplicationContext				XXXBeanFactory
 		  |
 AnnotationConfigApplicationContext
 GenericXmlApplicationContext
 XXXWebApplicationContext (web이 있는 것은 웹어플리케이션 개발용 IoC Container임)

BeanFactory : 기본 Spring Container
ApplicationContext : 기본 기능 + enterprise 환경에서 필요한 전용 기능이 추가된 컨테이너 (웹개발 가능. I18N (국제화 InternationalizatioN), AOP 기능,...)

4) DI (Dependency Injection : 의존성 주입)

(1) 의존성 (접근)

A 클래스 B를 사용하면 A와 B 간에 의존성이 생김

(2) 의존성 주입

A 클래스가 B를 참조하기 위해서 외부에서 A 클래스의 생성자에 B 객체를 생성해서 설정하는 작업을 의미
Spring 에서는 외부 역할을 IoC Container가 담당한다

(3) 의존성 주입 방법

4. 빌드 툴 (build tool)

1) 개념

  • 개발시 사용되는 자동화 툴

2) 종류

  • Maven (메이븐)
    pom.xml (설정 파일 : jdk/boot 버전, 필요한 jar 파일들 설정)
  • Gradle (그래들)
    build.gradle (설정 파일 : jdk/boot 버전, 필요한 jar 파일들 설정)

3) 빌트 툴 기능

(1) 이전 개발 프로세스

소스코드 작성 ----> 컴파일 ----> 테스트파일 작성 (단위테스트) ---> 컴파일 ----> 패키징 (jar/war) ----> 배포
	
    필요한 외부 jar 다운 + 빌드패스

(2) 빌드 툴 적용한 개발 프로세스

소스코드 작성 --> 컴파일 --> 테스트파일 작성(단위테스트) --> 컴파일 --> 패키징(jar/war) --> 배포
	
    필요한 외부 jar 다운 + 빌드패스
    			<----------------------------------------------------------------------------------------->
                		빌드툴이 거의 자동화해줌

4) Maven의 기본 디렉터리 구조

(1) src/main/java

  • 이전 이클립스의 src 경로와 동일. *.java 저장

(2) src/main/resource

  • *.java 제외한 나머지 파일들 저장
  • (예> jdbc.properties, EmpMapper.xml - 이전에는 src에 저장)

(3) src/test/java

  • 단위 테스트 용도의 *.java 저장

(4) src/test/resource

  • 단위 테스트 용도의 *.java 제외한 파일 저장

(5) JRE System Library

  • jdk 11 용 jar 파일들 저장

(6) Maven Dependencies

  • Spring Boot에서 사용해야되는 jar 파일들 저장
  • jUnit(mockito) 관련 jar : 단위 테스트 용도
  • logback(log4j, slf4j) 관련 jar : 로그 출력 (로깅 처리 용도)
    이제부터 System.out.println 더 이상 사용 안 함 !!
  • spring boot 관련 jar
    => 저장 경로는 C:\Users\ssginc72.m2\repository (로컬 저장소)

(7) pom.xml (Project Object Model)

  • 버전, 필요한 jar 정보 등 설정
  • 계층 구조로 구성됨 (부모에 해당하는 pom.xml 있음)
  • 필요로 하는 jar 파일은 < dependency > 로 설정하면 자동으로 다운로드 되고 build path까지 해줌
  • http://mvnrepository.com

5) Maven의 주요 기능

(1) 의존성 설정

pom.xml에 필요로 하는 jar 파일은 < dependency > 로 설정하면 자동으로 다운로드 되고 build path까지 해줌
http://mvnrepository.com에서 dependency 정보 얻을 수 있음

(2) 빌드시 사용되는 단계별 명령어

  • compile
  • test
  • package
  • install
  • deploy
  • clean

5. Spring Boot 프로젝트 생성 방법

=> 명시적으로 빌드 툴을 선택해야됨
=> STS 4 버전 pom.xml 변경하기
변경 전: https://maven.apache.org/xsd/maven-4.0.0.xsd
변경 후: http://maven.apache.org/xsd/maven-4.0.0.xsd
=> JDK 11, Spring Boot 2.7.18

1) STS에서 직접 생성

  • STS > New > Spring Starter Project

2) Initializer 이용한 방법

  • 웹에서 생성 후 workspace에 다운 받아서 사용
    (http://start.spring.io)
  • 압축 풀기 > import maven project > existing project > demo 선택
  • pom.xml에서 boot, jdk 버전 바꿔주기

6. IoC Container에게 빈 정보같은 데이터를 알려주는 방법

(Configuration 작업)

1) XML 이용
2) 어노테이션 + 약간의 XML
3) 어노테이션 <== Java Configuration이라고 부름

4) boot (1, 2, 3 기반 가능. 어노테이션 기반이 기본)
=> src/main/resources의 application.properties 이용해서 전반적인 환경설정을 설정함

0개의 댓글