스프링 프레임워크 소개
Spring은 컨테이너를 사용하여 애플리케이션의 다양한 구성 요소를 생성하고 관리하는 Java 프레임워크입니다. 컨테이너(종종 Spring 애플리케이션 컨텍스트라고 함)는 DI(종속성 주입) 디자인 패턴을 사용하여 애플리케이션의 여러 구성 요소를 연결합니다. DI를 사용하면 종속 클래스 내에서 개체의 새 인스턴스를 만들지 않고도 종속 클래스에서 개체를 사용할 수 있습니다.
따라서 각 구성 요소가 의존하는 새 인스턴스를 생성하도록 허용하는 대신 Spring의 컨테이너는 자신이 호스팅하는 각 구성 요소의 인스턴스를 생성하고 유지합니다. 그런 다음 이 컨테이너는 구성 요소 인스턴스를 필요한 다른 모든 구성 요소에 주입합니다.
Spring의 핵심 기능 탐색
Spring 프레임워크에는 애플리케이션을 만들고 관리하는 기능에서 중요한 역할을 하는 약 20개의 잘 구성된 모듈이 있습니다. 이러한 모듈의 주요 기능에 따라 다섯 가지 범주로 그룹화할 수 있습니다.
- 코어 컨테이너
- 데이터 액세스/통합
- 편물
- 측면 지향 프로그래밍 및 계측
- 테스트
스프링 컨테이너
Spring은 컨테이너를 사용하여 애플리케이션의 다양한 구성 요소(bean이라고 함)를 생성하고 관리합니다. 컨테이너는 개체(또는 빈)를 인스턴스화, 구성 및 어셈블할 수 있는 Spring의 ApplicationContext 인터페이스를 통해 액세스할 수 있습니다. Spring의 컨테이너는 구성 메타데이터의 도움으로 기능을 수행할 수 있습니다.
이 구성 메타데이터는 여러 가지 형식을 가질 수 있지만 일반적인 형식은 XML입니다. Bean 외에도 Spring의 컨테이너는 코어, 컨텍스트 및 표현식 모듈로 구성됩니다.
Spring 데이터 액세스/통합
스프링 프레임워크의 데이터 액세스/통합 측면은 JDBC, ORM, OXM, JMS 및 트랜잭션과 같은 여러 하위 모듈로 구성됩니다. 이러한 모듈은 함께 작동하여 애플리케이션에서 사용하는 모든 데이터를 관리합니다.
스프링 웹
Spring 애플리케이션의 웹 기능은 애플리케이션에 대한 웹 지향 통합을 제공합니다. 웹 지향 통합 외에도 Spring은 웹 서블릿 모듈을 제공합니다. 웹 서블릿 모듈은 Spring의 MVC(모델-뷰-컨트롤러) 구현을 담당합니다.
Spring AOP(측면 지향 프로그래밍)
Spring의 AOP 프레임워크는 Spring의 핵심 구성 요소 중 하나입니다. AOP 프레임워크는 Spring의 컨테이너 기능에 중요하지 않지만 유능한 미들웨어 솔루션이 되어 컨테이너를 보완합니다. AOP 프레임워크의 핵심 기능 중 하나는 애플리케이션에 대한 선언적 엔터프라이즈 서비스, 즉 선언 트랜잭션 관리를 제공한다는 것입니다.
선언적 트랜잭션 관리는 응용 프로그램 코드에 최소한의 영향을 미치기 때문에 소프트웨어 개발에 바람직한 접근 방식입니다.
스프링 테스트
Spring은 애플리케이션 테스트를 매우 중요하게 생각합니다. 테스트 모듈은 JUnit 또는 TestNG를 사용하여 통합 테스트 및 단위 테스트를 지원합니다.
스프링 애플리케이션 생성
새 Spring 애플리케이션에 대한 상용구를 만드는 방법에는 여러 가지가 있습니다. 다양한 접근 방식은 다음과 같습니다.
- Spring 공식 웹사이트의 웹 애플리케이션(또는 Spring Initializr)에서.
- 프로젝트 디렉토리 구조 및 빌드 사양을 수동으로 생성합니다.
- Spring Tool Suite와 함께.
- Spring Boot 명령줄 인터페이스를 사용하여 명령줄에서.
- 이클립스 IDE로.
- IntelliJ IDEA IDE로.
가장 인기 있는 접근 방식은 Spring Initializr입니다.
위의 이미지에서 볼 수 있듯이 몇 가지 결정을 내려야 합니다. 첫 번째는 초기화하려는 프로젝트 유형입니다. Spring은 Groovy용 Gradle, Kotlin용 Gradle 또는 Maven의 세 가지 옵션을 제공합니다. 이 샘플 애플리케이션은 Maven 프로젝트를 사용합니다.
선택해야 하는 다른 옵션은 언어(Java), 사용하려는 Spring Boot 버전 및 프로젝트 메타데이터입니다. Spring은 샘플 애플리케이션을 생성하는 데 도움이 되는 5개 필드에 이미 일부 더미 데이터를 가지고 있습니다. 그러나 이 메타데이터는 Spring 빈과 해당 메서드를 포함하여 Spring 애플리케이션을 설명하므로 프로젝트별 데이터로 이러한 필드를 업데이트해야 합니다.
다음으로 파일을 넣을 패키징(jar 또는 war)을 선택해야 합니다. 그런 다음 장치에 있는 Java 버전을 선택할 수 있습니다. 최종 결정은 애플리케이션에 대해 원하는 종속성 유형입니다.
Spring은 애플리케이션에 속성을 추가하는 데 사용할 수 있는 여러 종속성을 제공합니다. 애플리케이션에 새 종속성을 추가하려면 Spring Initializr 오른쪽에 있는 종속성 추가 버튼을 클릭하기만 하면 됩니다. 이 작업은 화면에 다음 오버레이를 생성합니다.
이 샘플 애플리케이션의 경우 필요한 유일한 종속성은 Spring Web입니다. 이 종속성을 통해 MVC 아키텍처를 사용하여 웹 애플리케이션을 빌드할 수 있습니다. 애플리케이션에서 사용하려는 모든 종속 항목을 선택한 후 생성을 클릭하세요. 이렇게 하면 프로젝트 상용구가 다운로드됩니다.
이제 Spring Boot(Spring의 라이브러리 중 하나) 프로젝트가 있습니다. 마지막 단계는 프로젝트를 선호하는 IDE로 가져오는 것입니다. Spring 프로젝트의 프로젝트 구조는 다음과 같습니다.
이것은 일반적인 Maven 프로젝트 구조이며 익숙해져야 할 몇 가지 중요한 파일이 있습니다.
- Pom.xml: Spring 애플리케이션 구성 데이터를 포함합니다.
- OnlineShopaholicsApplication.java: 애플리케이션을 실행하는 Spring Boot 기본 클래스입니다.
- OnlineShopaholicsApplicationTest.java: Spring 애플리케이션 컨텍스트(또는 컨테이너)가 올바르게 로드되는지 확인하는 JUnit 테스트 클래스입니다.
스프링 애플리케이션 실행
이 경우 OnlineShopaholicsApplication 클래스인 Spring의 부트스트랩 클래스에는 다음과 같은 초기 코드가 있습니다.
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
}
위 코드의 가장 중요한 측면 중 하나는 @SpringBootApplication 주석입니다. 이것은 애플리케이션이 세 가지 다른 주석의 기능에 액세스할 수 있도록 하는 복합 주석입니다.
- @EnableAutoconfiguration: 이 주석은 Spring Boot 자동 구성을 활성화합니다. 이는 애플리케이션이 작동하는 데 필요하다고 생각하는 구성 요소를 구성하도록 Spring 부트에 지시한다는 의미입니다.
- @ComponentScan: 이 주석을 사용하면 구성 요소 스캔을 활성화할 수 있습니다. 이 기능은 Spring이 Spring 애플리케이션 컨텍스트(또는 컨테이너)에서 사용할 주석이 달린 다른 구성 요소를 자동으로 검색하고 등록할 수 있도록 하는 중요한 기능입니다.
- @SpringBootConfiguration: @Configureation 어노테이션의 특화된 형태로 Spring 애플리케이션 컨텍스트에 빈(또는 객체)을 등록할 수 있습니다.
위 코드의 다른 중요한 측면은 응용 프로그램을 실행 하는 main() 메서드입니다. 응용 프로그램이 지금 실행되면 단순히 서버를 시작합니다. 따라서 애플리케이션에 더 많은 기능을 추가하려면 코드를 업데이트해야 합니다.
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
@GetMapping("/customer")
public String Welcome(@RequestParam(value = "name", defaultValue = "Customer") String name) {
return String.format("Welcome %s!", name);
}
}
Spring Boot 애플리케이션에는 이제 세 가지 새로운 주석이 있습니다.
- @RestController: 이 주석은 클래스를 컨트롤러로 표시하므로 위 클래스의 모든 메서드(main() 제외)는 보기 대신 도메인 개체를 반환합니다.
- @GetMapping: 이 주석은 HTTP GET 요청을 특정 헤더 메서드에 매핑합니다. 따라서 브라우저에서 “/customer”에 대한 요청을 생성할 때마다 Welcome() 메서드는 문자열 값을 반환하여 요청을 처리합니다.
- @RequestParam: 이 주석은 메소드 매개변수가 웹 요청 매개변수에 바인딩되어야 함을 나타냅니다.
업데이트된 코드를 사용하면 이제 Spring OnlineShopaholicsApplication 에 브라우저에서 볼 수 있는 고객 페이지가 있습니다. 애플리케이션을 실행하면 서버가 시작되고 콘솔에 출력이 생성됩니다.
출력에는 중요한 정보가 많이 있습니다. 서버가 실행 중임을 알려주고 초기화 프로세스가 얼마나 오래 걸렸는지 알려주며 애플리케이션이 실행 중인 포트(기본값 8080)를 알려줍니다. 따라서 http://localhost:8080/customer 로 이동 하면 브라우저에 다음 출력이 표시됩니다.
이제 애플리케이션 보기를 디자인할 수 있습니다.
프로젝트 구조에서 알아차릴 수 있는 또 다른 중요한 파일은 템플릿 폴더입니다. 이상적으로는 OnlineShopaholicsApplication 클래스는 다양한 보기에 대한 요청을 처리하는 컨트롤러 역할을 해야 합니다. 따라서 완전한 애플리케이션에서 컨트롤러 클래스는 해당 요청 보기에 표시될 텍스트를 포함하지 않아야 합니다.
대신 HTML을 사용하여 템플릿 파일을 만들고 Spring 애플리케이션의 템플릿 폴더에 배치해야 합니다.
답글 남기기