수업내용/Spring

[2023.1.17.화] 스프링 부트

주니어주니 2023. 1. 17. 17:14

 

 

 

Spring 

 

  • 자바 엔터프라이즈 애플리케이션 개발을 지원하는 오픈소스 프레임워크
  • 특징
    • POJO(Plain Old Java Object)을 사용해서 자바 엔터프라이즈 애플리케이션을 개발한다.
      • POJO - 순수 자바객체
                   - 특별한 외부 라이브러리를 가져와서 사용하지 않는 자바객체
                   - 특별한 실행환경에 종속되지 않는 자바객체 
                   - POJO는 재사용하기 쉽다.
                   - POJO는 테스트하기 쉽다.
                   - POJO는 코드가 단순하고, 디버깅하기 쉽다. 
    • IoC/DI의 구현체다.
      • IoC (Inversion of Control : 제어역전)
         - 자신이 사용할 객체를 스스로 생성하지 않고
           외부로부터 전달받거나 (의존성 주입) ,
           생성된 객체를 검색해서 사용하는 것 (의존성 검색)을 말한다. 

         - 제어역전은 자신이 사용할 객체를 획득하는 방법이 역전되었다(뒤바뀌었다)는 의미다.

         - Spring Container는 IoC의 구현체다. 

         - IoC의 종류
           의존성 주입 - DI (Dependency Injection) 
           의존성 검색 - DP (Dependency Pull, DL (Dependency Lookup) 
          
      • DI (Dependency Injection : 의존성주입)
         - 자신이 사용할 객체를 스스로 생성하지 않고, 제3자(Spring Container)로부터 제공(주입)받는 것이다.
         - 스프링에서는 @Autowired를 이용해서 자동 의존성 주입을 지원한다.

        • 스프링과 스프링 컨테이너
          스프링 -> 프레임워크
          스프링 컨테이너 -> 구현 클래스
          스프링 컨테이너는 스프링 빈 설정정보를 읽어서 객체를 생성하고, 객체간의 의존관계를 파악해서 의존성 주입작업을 수행하는 객체다. 
    • AOP의 구현체다.
      • - AOP(Aspect Oriented Programming)는 관점지향 프로그래밍이다.
        - AOP는 기능을 공통관심사항(로깅, 트랜잭션처리, 예외처리), 핵심관심사항(업무로직)으로 구분해서 개발하는 것이다.
        - AOP는 공통관심사항을 별도의 클래스로 구현하고, 핵심관심사항이 구현된 메소드가 실행될 때 지정한 공통관심사항이 같이 실행되게 하는 것이다. 
        - AOP를 사용하면 개발자가 구현하는 메소드에는 핵심관심사항만 남아있게 된다. (개발자는 업무로직 구현에 집중)
            * 선언적 트랜잭션 처리는 AOP를 이용한 것
        - AOP는 코드의 중복을 제거한다.
        - AOP는 코드가 간결해지고, 유지보수를 쉽게한다.
    • 다양한 모듈로 구성되어 있다. (필요한 모듈만 골라서 쓸 수 있음)
      • Test 모듈
        - spring-test : spring application에 대한 테스트를 지원하는 라이브러리가 있다.

      • Core Container 모듈
        - spring-beans, spring-core, spring-context : 객체 생성, 의존성 주입, 국제화처리 등을 지원하는 spring container를 제공
        - spring-expression : spring EL (exprission language) 지원

      • AOP 모듈
        - spring-aop : 관점지향프로그래밍 지원

      • DataAccess 모듈
        - spring-jdbc : jdbc를 활용한 데이터베이스 액세스 지원
        - spring-tx : 트랜잭션 처리 지원
        - spring-orm : 객체-관계 매핑프레임워크 (ORM : Object-Rerational Mapping) 와의 연동 지원
                              객체와 테이블을 매핑해서 데이터베이스 액세스 작업 수행 

      • Web 모듈
        - spring-web : 웹 환경에 최적화된 spring container를 제공
        - spring-webmvc : MVC 패턴의 웹 애플리케이션 개발을 지원
        - spring-websocket : 웹소켓 기능 지원 

 

 


 

 

Spring boot 

  • spring framework를 기반으로 하는 하위 프로젝트
  • XML이나 추가적인 코드 작성없이 바로 실행할 수 있는 독립 실행형 Spring Application을 빠르게 제작할 수 있도록 지원한다.
  • 특징
    • 독립 실행형 애플리케이션
      - 플랫폼(하드웨어 운영체제)에 종속되지 않고 인터넷 연결이나 기타 서비스 설치없이 바로 작동하는 애플리케이션을 개발할 수 있다.
    • 내장형 서버
      - Tomcat, Jetty 등의 내장형 서버를 포함하고 있다.
    • 의견 제시형 접근 방식의 개발 ( 방식이 정해져있는 그 한가지의 방법을 제시함 ) 
      - 의견 제시형 접근 방식을 이용해서 애플리케이션을 구성한다.
      - 의견 제시형 접근 방식은 소프트웨어 디자인에 있어서는 소프트웨어 개발자의 자유도를 제한해 작업을 미리 지정된 방식으로 진행하도록 하는 것 ( best practice ) 
    • 자동구성
      - 프로젝트에 새로운 라이브러리가 포함될 때마다 해당 라이브러리와 관련된 구성을 자동으로 수행한다.
      - 새로운 라이브러리가 포함될 때마다, 미리 정해진 방식으로 설정된 정보를 읽어서 자동으로 애플리케이션을 구성한다. 

 

 

 


 

 

 

프로젝트 생성 new -> project

 

 

 

Type : 빌드방식 -> maven, gradle, kotlin

 

Packaging : jsp기반 -> war 

                   그외 -> jar 

 

 

 

 

 

spring-web 등의 라이브러리와 과 그 하위 라이브러리를 모두 받음 

( maven 홈페이지에서 라이브러리를 복사해 올 필요 X )

 

 

 

 

* application.yml (환경설정 세팅) 

 

application.properties -> 자동완성 X

application.yml -> 자동완성 O, : 뒤에 반드시 한칸 띄기, 들여쓰기는 두칸 띄기

 

 

 

- 톰캣 서버 설정 : 톰캣 켜짐, 포트번호 80

- db 연결 설정

- spring mvc 관련 설정

- mybatis 환경설정

 

 

 

 

 

 

* pom.xml

- 원래 jsp를 지원하지 않기 때문에 jsp를 지원하는 라이브러리 의존성 추가  

 

 

 

 

 

* Boot Dashboard 열어서 실행, 중단시키기 

 

 

 

 

 

 

* Mapper 인터페이스 생성 

 

 

interface 생성 -> @Mapper 어노테이션 

 

 

 

 

* mapper 파일 생성