수업내용/Spring
[2023.1.17.화] 스프링 부트
주니어주니
2023. 1. 17. 17:14
Spring
- 자바 엔터프라이즈 애플리케이션 개발을 지원하는 오픈소스 프레임워크
- 특징
- POJO(Plain Old Java Object)을 사용해서 자바 엔터프라이즈 애플리케이션을 개발한다.
- POJO - 순수 자바객체
- 특별한 외부 라이브러리를 가져와서 사용하지 않는 자바객체
- 특별한 실행환경에 종속되지 않는 자바객체
- 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를 이용해서 자동 의존성 주입을 지원한다.
- 스프링과 스프링 컨테이너
스프링 -> 프레임워크
스프링 컨테이너 -> 구현 클래스
스프링 컨테이너는 스프링 빈 설정정보를 읽어서 객체를 생성하고, 객체간의 의존관계를 파악해서 의존성 주입작업을 수행하는 객체다.
- 스프링과 스프링 컨테이너
- IoC (Inversion of Control : 제어역전)
- AOP의 구현체다.
- - AOP(Aspect Oriented Programming)는 관점지향 프로그래밍이다.
- AOP는 기능을 공통관심사항(로깅, 트랜잭션처리, 예외처리), 핵심관심사항(업무로직)으로 구분해서 개발하는 것이다.
- AOP는 공통관심사항을 별도의 클래스로 구현하고, 핵심관심사항이 구현된 메소드가 실행될 때 지정한 공통관심사항이 같이 실행되게 하는 것이다.
- AOP를 사용하면 개발자가 구현하는 메소드에는 핵심관심사항만 남아있게 된다. (개발자는 업무로직 구현에 집중)
* 선언적 트랜잭션 처리는 AOP를 이용한 것
- AOP는 코드의 중복을 제거한다.
- AOP는 코드가 간결해지고, 유지보수를 쉽게한다.
- - AOP(Aspect Oriented Programming)는 관점지향 프로그래밍이다.
- 다양한 모듈로 구성되어 있다. (필요한 모듈만 골라서 쓸 수 있음)
- 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 : 웹소켓 기능 지원
- Test 모듈
- POJO(Plain Old Java Object)을 사용해서 자바 엔터프라이즈 애플리케이션을 개발한다.
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 파일 생성