Spring Boot 시작 자습서

8978 단어 springboot입문
소개
많은 사람들이 스프링 프레임워크를 접촉한 지 오래되었다고 믿습니다. 스프링 프레임워크를 구축할 때마다 많은jar,xml을 설정해야 합니다. 번거롭고 반복적인 설정을 많이 해야 합니다. 조금만 조심하지 않으면 여러 가지 문제가 발생할 수 있습니다. 매번 디버깅을 하면 정말 표고버섯, 푸른색입니다.
springboot의 출현은 우리가 이런jar의 의존을 철저히 해결하는 데 도움을 주었다. 아주 적은 설정만으로도 우리의 개발 작업을 완성할 수 있다. 우리는 자신의 응용 프로그램을jar로 포장하고java-jar를 사용하여spring 웹 응용 프로그램을 실행할 수 있다.springboot은 많은 웹 콘덴서를 통합시켰다.오늘은 스프링부트 MVC를 소개해 드리겠습니다. 스프링부트를 이용하여 간단한 웹 응용 프로그램을 신속하게 구축하는 방법을 배우겠습니다.
환경 준비
(예: Vim, Emacs, Sublime Text) 또는 IDE(Eclipse, Idea Intellij)
  • Java 환경(JDK 1.7 이상)
  • Maven 3.0+(Eclipse 및 Idea IntelliJ 내장, IDE를 사용하고 명령줄 도구를 사용하지 않으면 설치하지 않음)
  • 가장 간단한 웹 응용 프로그램
    Spring Boot 프레임워크를 사용하면 웹 응용 프로그램의 개발 과정을 크게 가속화할 수 있다. 먼저 Maven 프로젝트 의존에 spring-boot-starter-web를 도입한다.
    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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.tianmaying</groupId>
     <artifactId>spring-web-demo</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>spring-web-demo</name>
     <description>Demo project for Spring WebMvc</description>
     <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.2.5.RELEASE</version>
     <relativePath/>
     </parent>
     <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <java.version>1.8</java.version>
     </properties>
     <dependencies>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     </dependencies>
     <build>
     <plugins>
     <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>
     </plugins>
     </build>
    </project>
    다음은 src/main/Java/Application을 만듭니다.java:
    
     import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    @SpringBootApplication
    @RestController
    public class Application {
     @RequestMapping("/")
     public String greeting() {
     return "Hello World!";
     }
     public static void main(String[] args) {
     SpringApplication.run(Application.class, args);
     }
    }
    실행 응용 프로그램: mvnspring-boot:run 또는 IDE에서main() 방법을 실행하고 브라우저에서 접근http://localhost:8080, Hello World!페이지에 나타납니다.겨우 십여 줄의 자바 코드만 사용하면 헬로월드 앱 하나로 정확하게 실행할 수 있다. 그렇다면 이 코드는 도대체 무엇을 한 것일까?우리는 프로그램의 입구에서 Spring Application을 사용합니다.run(Application.class, args);분석 시작:
  • Spring Application은 Spring Boot 프레임워크에서 Spring 응용 프로그램을 설명하는 클래스입니다. run() 방법은 Spring 응용 상하문(Application Context)을 만듭니다.다른 한편, 이것은 현재 응용 클래스 경로의 의존을 스캔합니다. 예를 들어 본 예에서spring-webmvc(spring-boot-starter-web 전달로 도입된)가 클래스 경로에 있음을 발견하면spring Boot은 웹 응용 프로그램이라고 판단하고 내장된 Servlet 용기 (기본적으로 Tomcat) 를 시작하여 HTTP 요청을 처리하는 데 사용합니다.
  • Spring WebMvc 프레임워크는 Servlet 용기에서 받은 HTTP 요청을 경로에 따라 대응하는 @Controller 클래스에 나누어 처리합니다. @RestController는 특수한 @Controller로 HTTP Response의 Body 부분으로 브라우저에 직접 되돌려줍니다.
  • @RequestMapping 주석은 이 방법은 URL에 대응하는 HTTP 요청, 즉 우리가 흔히 말하는 URL 루트(routing)를 처리하고 요청의 분배 작업은 Spring이 완성한 것을 나타낸다.예를 들어 위의 코드에서 http://localhost:8080/ 루트 경로는greeting () 방법으로 처리됩니다.방문http://localhost:8080/hello하면 404 Not Found 오류가 발생합니다./hello 요청을 처리할 방법이 없기 때문입니다.
  • @Controller를 사용하여 URL 라우팅 수행
    현대 웹 응용 프로그램은 왕왕 많은 페이지를 포함하고 서로 다른 페이지도 서로 다른 URL에 대응한다.일반적으로 서로 다른 URL에 대해 서로 다른 방법으로 처리하고 다른 내용을 되돌려야 합니다.
    여러 URL 일치
    
    @RestController
    public class Application {
     @RequestMapping("/")
     public String index() {
     return "Index Page";
     }
     @RequestMapping("/hello")
     public String hello() {
     return "Hello World!";
     }
    }
    @RequestMapping은 @Controller 클래스에 주석을 달 수 있습니다.
    
     @RestController
    @RequestMapping("/classPath")
    public class Application {
     @RequestMapping("/methodPath")
     public String method() {
     return "mapping url is /classPath/methodPath";
     }
    }
    method 메서드가 일치하는 URL은/classPath/methodPath입니다.
    힌트
    여러 개의 @Controller를 정의하여 서로 다른 URL의 처리 방법을 서로 다른 클래스에 분산시킬 수 있습니다
    URL의 변수 - PathVariable
    웹 응용 프로그램에서 URL은 일반적으로 고정불변한 것이 아니다. 예를 들어 마이크로박의 두 사용자의 개인 홈페이지는 두 개의 다른 URL:http://weibo.com/user1, http://weibo.com/user2에 대응한다.모든 사용자가 @RequestMapping 메모를 작성하여 요청을 처리할 수는 없습니다. Spring MVC는 이러한 상황을 처리하는 메커니즘을 제공합니다.
    
     @RequestMapping("/users/{username}")
    public String userProfile(@PathVariable("username") String username) {
     return String.format("user %s", username);
    }
    @RequestMapping("/posts/{id}")
    public String post(@PathVariable("id") int id) {
     return String.format("post %d", id);
    }
    상기 예에서 URL의 변수는 {variableName}로 표시할 수 있으며, 방법의 매개 변수에 @PathVariable ("variableName") 을 추가하면, 요청이 이 방법으로 처리될 때, 대응하는 URL의 변수는 @PathVariable이 주석한 매개 변수 (예를 들어 상례의 int) 에 자동으로 값을 부여할 수 있습니다.
    HTTP 지원 방법
    HTTP 요청의 URL 이외에도 메서드에 유의해야 합니다.예를 들어 웹 브라우저에서 액세스하는 페이지는 일반적으로 GET 메서드이고 양식 제출은 POST 메서드입니다. @Controller의 방법과 마찬가지로 구분해야 합니다.
    
     @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String loginGet() {
     return "Login Page";
    }
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String loginPost() {
     return "Login Post Request";
    }
    템플릿 렌더링
    이전의 모든 @RequestMapping 주석의 방법에서 반환값 문자열은 브라우저로 직접 전송되어 사용자에게 표시됩니다.그러나 더욱 풍부하고 아름다운 페이지를 보여주기 위해서는 HTML 코드를 브라우저에 되돌려주고 브라우저가 페이지를 렌더링하고 표시해야 한다.
    매우 직관적인 방법은 요청을 처리하는 방법에서 HTML 코드를 직접 되돌려 주는 것이다. 그러나 이렇게 하는 문제는 복잡한 페이지의 HTML 코드도 왕왕 매우 복잡하고 자바 코드에 끼워 넣는 것이 유지보수에 매우 불리하다는 것이다.더 좋은 방법은 페이지의 HTML 코드를 템플릿 파일에 쓰고 렌더링한 후에 사용자에게 되돌려주는 것이다.템플릿 렌더링을 수행하려면
    @RestController에서 @Controller로 변경:
    
     import org.springframework.ui.Model;
    @Controller
    public class HelloController {
     @RequestMapping("/hello/{name}")
     public String hello(@PathVariable("name") String name, Model model) {
     model.addAttribute("name", name);
     return "hello"
     }
    }
    상기 예에서 반환값'hello'는 브라우저에 문자열을 직접 되돌려 주는 것이 아니라 이름이 hello인 템플릿을 찾아 렌더링합니다. 저희는 Thymeleaf 템플릿 엔진을 사용하여 템플릿 렌더링을 합니다. 의존도를 도입해야 합니다.
    
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    다음은 기본 템플릿 폴더 src/main/resources/templates/디렉터리에 템플릿 파일hello를 추가해야 합니다.html:
    
     <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
     <title>Getting Started: Serving Web Content</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
     <p th:text="'Hello, ' + ${name} + '!'" />
    </body>
    </html>
    th:text='Hello,'+ ${name} +'!'즉, 우리가 이전에 @Controller 방법에 모델의 속성name을 추가하여 렌더링하고

    탭에 넣는 것입니다. (th:text는

    탭의 속성이기 때문입니다.)템플릿 렌더링에는 더 많은 사용법이 있습니다. Thymeleaf 공식 문서를 참고하십시오.
    정적 파일 처리
    브라우저 페이지에서 HTML을 설명 언어로 사용하면 CSS와 JavaScript에서 벗어날 수 없습니다.브라우저가 유사한/css/style을 정확하게 불러올 수 있도록 합니다.css,/js/main.js 등 자원, 기본적으로 src/main/resources/static 디렉터리에 css/style을 추가하기만 하면 됩니다.css와 js/main.js 파일 후, Spring MVC는 자동으로 그들을 발표할 수 있으며,/css/style에 접근할 수 있습니다.css,/js/main.js도 이 자원들을 정확하게 불러올 수 있습니다.
    위에서 말한 것은 편집자가 여러분께 소개한 Spring Boot 빠른 입문 강좌입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

    좋은 웹페이지 즐겨찾기