본문 바로가기
스프링 공부

Spring Framework 개념 정리

by 코딩마스터^^ 2024. 8. 6.

스프링 매일 썼지만 개념 정리 부족한것을 많이 느꼈다...

 

아예 모른다고 가정하고...( ^^) 첨부터 개념 챙기자

 

1. Spring Framework 개요

Spring Framework는 경량 컨테이너로, 자바 객체(빈)IoC(Inversion of Control) 원칙에 따라 관리합니다. 주요 모듈은 다음과 같습니다:

  • Core: IoC(제어의 역전)와 DI(Dependency Injection 의존성 주입) 제공
  • AOP: 관점 지향 프로그래밍 지원
  • JDBC: 데이터 접근 기능 강화
  • MVC: 웹 애플리케이션 개발 지원
  • Test: 테스트 프레임워크 제공

2. Inversion of Control (IoC)와 Dependency Injection (DI)

  • IoC: 객체의 생성과 생명주기 관리 제어권을 개발자에서 컨테이너로 전환하는 원칙입니다.
  • DI: 객체의 종속성을 주입하여 결합도를 낮추는 방식입니다.

3. Spring 프로젝트 설정

Spring 프로젝트를 설정하는 기본 단계는 다음과 같습니다:

  1. 프로젝트 생성: Spring Initializr를 사용하여 새 프로젝트를 생성합니다.
  2. 프로젝트 구조: Maven이나 Gradle을 사용하여 종속성을 관리합니다.
  3. 애플리케이션 구성: application.properties 또는 application.yml 파일을 사용하여 설정을 관리합니다.
  4. 메인 클래스 작성: @SpringBootApplication 어노테이션을 사용하여 메인 클래스를 작성합니다.

4. 기본 애플리케이션 작성

스프링 애플리케이션의 기본 예제를 만들어 보겠습니다.

1. Spring Boot 프로젝트 생성

Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다.

2.

1) Maven POM 파일 설정

pom.xml 파일을 설정하여 필요한 종속성을 추가합니다.

2) Gradle 프로젝트 설정

Gradle을 사용하여 Spring Boot 프로젝트를 설정하는 방법은 다음과 같습니다:

Gradle 빌드 파일 생성

프로젝트의 루트 디렉터리에 build.gradle 파일을 생성합니다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.4' //스프링부트 버전
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.ke'
version = '0.0.1-SNAPSHOT'//스냅샷 버전

java {
	sourceCompatibility = '17' //자바버전 17사용함
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
	compileOnly 'org.projectlombok:lombok'
//	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	runtimeOnly 'com.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.3'
	implementation 'org.springframework.boot:spring-boot-starter-mail'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

	// JSON-B 관련
	implementation 'jakarta.json.bind:jakarta.json.bind-api:1.0.2'
	implementation 'org.eclipse:yasson:1.0.8'
	implementation 'org.glassfish:jakarta.json:1.1.6'

	//qr코드 생성 라이브러리
	implementation 'com.google.zxing:core:3.4.1'
	implementation 'com.google.zxing:javase:3.4.1'


	implementation 'org.springframework.boot:spring-boot-starter-aop'

	implementation 'ch.qos.logback.db:logback-classic-db:1.2.11.1'
	implementation 'ch.qos.logback.db:logback-access-db:1.2.11.1'

	implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.0"
	implementation 'org.apache.tika:tika-core:2.5.0'

	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'

	implementation group: 'org.imgscalr', name: 'imgscalr-lib', version: '4.2'


}

tasks.named('test') {
	useJUnitPlatform()
}

3. 애플리케이션 클래스 작성

4. 컨트롤러 작성

 

 

요약

  1. Gradle 빌드 파일(build.gradle)을 설정합니다.
  2. Spring Boot 애플리케이션 클래스, 컨트롤러, 서비스 클래스를 작성합니다.
  3. JUnit과 Spring TestContext Framework를 사용하여 단위 테스트 및 통합 테스트를 작성합니다.

Gradle을 사용한 Spring Boot 프로젝트 설정은 Maven과 유사하지만, Gradle의 빌드 스크립트는 Groovy 또는 Kotlin DSL로 작성됩니다.

 

댓글