드디어 대망의 Spring boot (스프링 부트) 강의를 수강하게 되었다.
코드프레소 Java 웹 개발 체험단 활동 중 아직 객체지향 개념과 실습이 부족하지만 프레임워크를 다룬다는 것이 너무 고대하던 순간이였다.
아직 모든 강의가 안올라와 환경설정 및 HTML, CSS 개념 정도 올라왔지만 그래도 공부를 위해 포스팅한다.
Spring Framework는 러닝 커브가 매우 높으며, Java의 객체 지향 설계 원칙과 디자인 패턴, loc, DI, AOP, Bean과 Context의 개념이 필요하다.
Spring Framework는 웹 개발만을 위한 Framework는 아니지만, 주로 웹 어플리케이션 개발을 위해 활용된다.
작은 게시판과 같은 웹 어플리케이션부터 Netflix 수준의 대규모 어플리케이션을 개발하는데 적용 가능하다.
Spring Framework의 장점
- 경량화 된 Java Framework
- POJO의 사용으로 재사용가능한 코드 개발 가능
- DI와 AOP의 적용
- Transaction관리의 편의성
- MVC 아키텍처의 지원
- 테스트가 용이하다.
- 높은 보안성
Spring Framework의 단점
- Bean, DI, AOP, 객체지향 설계, 디자인 패턴 등 다양한 개념이 필요하므로 러닝커브가 길다.
- 간단한 웹 어플리케이션 개발에도 복잡하고 상당한 수준의 설정이 필요
- 그러나 Spring Boot가 출시되며 자동화 설정과 간편화 된 의존성 관리으로 문제가 해결된다.
웹 서비스 개발 및 운영의 직군
- 퍼블시싱, 마크업 개발
- 프론트엔드(웹, 모바일) 개발
- 백엔드 개발
REST API 개발
프론트엔드에서 호출하는 API - DB 설계, 운영
- 시스템 엔지니어링, 인프라 엔지니어링
Spring Boot 어플리케이션 개발 및 실행 순서
- spring initializr 를 활용한 Spring Boot 프로젝트 생성 및 다운로드
- 다운로드 한 Spring Boot 프로젝트를 IntelliJ에서 import
- 추가 코드 개발
- Spring Boot 어플리케이션 실행
- 웹 브라우저 또는 Postman을 활용하여 API 테스트
spring initializr
- Spring Boot 프로젝트를 쉽게 구성할 수 있게 지원하는 사이트
- https://start.spring.io/
지금 수강중인 스프링 강의에서 알려준 설정대로 아래 Generate 버튼을 클릭하여 진행하였다.
인텔리제이에서 File -> Open -> 다운받은 프로젝트를 열어준다.
Open하면 프로젝트가 환경 설정을 자동으로 구성한다.
Open하고 Package가 분리되는 현상이 발생되는 경우가 있다.
먼저 java 폴더를 우클릭하여 Mark Directory as -> Sources Root 설정하고
이와 같이 프로젝트 상단에 톱니바퀴를 누르고 Compact Middle Packages가 있을 것이다.
체크하면 패키지를 한줄로 정리할 수 있다.
패키지 분리가 필요한 경우 체크를 해제해서 원하는 패키지를 생성하고 개발할 수 있다.
만약 @라는 에노테이션이 위 사진처럼 활성화가 안되어 있는 경우 오른쪽 Maven을 클릭하여 Refresh 아이콘을 한번 눌러줘서 활성화하도록 한다.
- helloworld 아래 controller Package를 생성하고 아래 HelloWorldController Class를 생성해준다.
- 클래스위에 @RestController를 작성하고 Enter만 쳐주면 알아서 인텔리제이가 springframwork에서 import
- 테스트를 위해 hello 메소드를 작성하고 메소드위에 @GetMapping(value = "/") 를 작성해준다.
- 마지막으로 위 사진처럼 코딩을 하면 HelloworldApplication을 실행시킨다.
이처럼 콘솔 창에 실행이 되면 잘 실행된 것이다.
맨 위 빨간 줄은 JDK 버전 호환 관련으로 신경을 안써줘도 된다. (본인은 JDK 15)
실행되면 오른쪽 8080이라는 포트번호가 보일 것이다.
8080은 Mapping된 포트번호로, 실행하고 http://localhost:8080/을 접속해준다.
이처럼 localhost에서 아까 작성한
<h1>Hello Spring Boot!!</h1>
이 HTML코드가 정상적으로 작동된 것이다.
원래 스프링부트를 사용하는 데에 설정이 복잡하다... 그런데 start.spring.io 에서 Spring web Dependency를 추가하면 안에 설정 파일들을 내장해서(Tomcat 등등) 인텔리제이가 설정 환경을 구축해준다.
나중에 필요한 Dependency가 필요한 경우에는 pom.xml 파일에
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.codepresso</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>helloworld</name>
<description>My hello world project</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<dependency> 태그에 원하는 의존성을 추가해주면 된다.
'Spring' 카테고리의 다른 글
[Spring boot] @ManyToMany를 사용하면 안 되는 이유 (2) | 2022.10.12 |
---|---|
JPA vs MyBatis 비교 (0) | 2022.03.25 |
[Spring] MyBatis 연동 및 API 테스트 (3) | 2022.02.11 |
[Spring] Spring Service, Bean, 의존성 주입 (0) | 2022.02.07 |
[Spring Boot] Spring 웹 개발 입문 (Spring Controller, HTTP, REST API 문서) (0) | 2022.02.03 |