Spring Boot学习笔记(一)--初识Spring Boot

什么是Spring Boot?

Spring Boot 是Spring 团队在现有Spring框架的基础上发布了一个创新的主要框架:Spring Boot。这是一个来自Pivotal Team(Spring Team)的全新项目。Spring Boot是他们最新的创新,能够跟上不断变化的技术需求。 开发Spring Boot的主要动机是简化配置和部署spring应用程序的过程。

Spring Boot为开发提供一个具有最小功能的Spring应用程序,并提供了一个新的范例。使用Spring Boot将能够以更灵活的方式开发Spring应用程序,并且能够通过最小(或可能没有)配置Spring来专注于解决应用程序的功能需求。它使用全新的开发模型,通过避免一些繁琐的开发步骤和样板代码和配置,使Java开发非常容易。

Spring Boot可以轻松创建单独的,生产级的基于Spring的应用程序,我们只管“运行”。查看Spring平台和第三方库。大多数Spring Boot应用程序只需要很少的Spring配置。

Spring Boot的主要特点:

  • 创建独立的Spring应用程序
  • 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
  • 提供自己的’入门’POM来简化你的Maven配置
  • 尽可能自动配置Spring
  • *提供生产就绪功能,如指标,运行状况检查和外部配置
  • 绝对不会生成代码,并且不需要XML配置

第一个Spring Boot项目

下面先来看看第一个Spring Boot项目,认识一下Spring Boot基本结构。
通过eclipse创建Spring Boot项目(先自行装上sts插件、maven插件,本文略)。
右键→new→project→Spring Boot→Spring Start Project如图:
这里写图片描述
点击next
这里写图片描述
填写完对应的信息,这里使用的事maven插件。点击next
这里写图片描述
选择需要的组件,这里先只选择web组件,点击finish。
目录结构如下:
这里写图片描述
我们先看看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.example</groupId>
    <artifactId>helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>hello_world</name>
    <description>Demo project for Spring Boot</description>

    <!-- 用来继承spring boot的相关配置,提供一些默认配置,
    在这里指定版本号后,导入其它的starters就可以省略版本号 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- 对web开发的支持,包括tomcat和spring-webmvc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 导入常用测试组件,包括JUnit、Hamcrest、Mockito -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <!-- 为Spring Boot应用提供了执行Maven操作 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

先来看看HelloWorldApplication.java这个类:

package com.example.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * @SpringBootApplication: 是@Configuration@EnableAutoConfiguration@ComponentScan的简化形式
 * 1.@Configuration:用来配置和初始化类(由Spring IOC)完成。
 * 2.@EnableAutoConfiguration:自动配置Spring APP的上下文,通常放在root包下,从而保证所有的子包、类都能被扫描到。
 * 3.@ComponentScan:用来自动扫描指定包下的全部标有@Component注解及其子
 *   注解(@Service@Repository@Controller)的类,并注册成bean.
 * @author yms
 *
 */
@SpringBootApplication
public class HelloWorldApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

该类下的main方法是整个工程的入口。该类建议放在java的跟目录,即src/main/java下。
其中@SpringBootApplication的作用大致理解为:对该目录下的所有子目录下的类进行扫描、初始化(个人理解,与spring中的xml配置文件起着相同的作用,只不过是进行了封装,采用注解的形式简化了配置)。

我们在Java根目录的包下创建一个controller子包,在该包下新建一个Java类。如图所示:
这里写图片描述
HelloWorld.java代码如下:

package com.example.hello.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @RestController:相当于@ResponseBody+@Controller。代表这个class所有的方法都是返回值或者对象到本页面
 * @author yms
 *
 */
@RestController
public class HelloWorld {

    @RequestMapping(value="/hello")
    public String say() {
        return "Hello World";
    }
}

其中@RestController对类进行注解的作用就是改类下的所有方法返回字符串或json格式的内容到对应的请求上。

下面在HelloWorldApplication.java中右键→Run As →Spring Boot App。在控制台中看到如下信息:


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.2.RELEASE)

2018-05-27 15:42:12.255  INFO 8212 --- [           main] com.example.hello.HelloWorldApplication  : Starting HelloWorldApplication on Sony-VAIO with PID 8212 (D:\springCloud\hello_world\target\classes started by Sony in D:\springCloud\hello_world)
2018-05-27 15:42:12.258  INFO 8212 --- [           main] com.example.hello.HelloWorldApplication  : No active profile set, falling back to default profiles: default
2018-05-27 15:42:12.312  INFO 8212 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2893de87: startup date [Sun May 27 15:42:12 CST 2018]; root of context hierarchy
2018-05-27 15:42:13.373  INFO 8212 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2018-05-27 15:42:13.394  INFO 8212 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-05-27 15:42:13.394  INFO 8212 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.31
2018-05-27 15:42:13.399  INFO 8212 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jre1.8.0_172\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_172/bin/server;C:/Program Files/Java/jre1.8.0_172/bin;C:/Program Files/Java/jre1.8.0_172/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;d:\oracle\product\11.2.0\dbhome_1\bin;C:\Program Files\Java\jdk1.7.0_67\bin;C:\Program Files\Java\jdk1.7.0_67\jre\bin;D:\apache-maven-3.3.9\bin;D:\mysql-5.7.18-winx64\bin;%CATALINA_HOME%\lib;D:\Program Files\TortoiseSVN\bin;D:\Program Files (x86)\Rational\common;D:\apache-maven-3.3.9\bin\;D:\Program Files\Python36;D:\Program Files (x86)\Tesseract-OCR;D:\Program Files (x86)\Fiddler;D:\Program Files\eclipse;;.]
2018-05-27 15:42:13.487  INFO 8212 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-05-27 15:42:13.488  INFO 8212 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1178 ms
2018-05-27 15:42:13.610  INFO 8212 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2018-05-27 15:42:13.615  INFO 8212 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-05-27 15:42:13.615  INFO 8212 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-05-27 15:42:13.616  INFO 8212 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-05-27 15:42:13.616  INFO 8212 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2018-05-27 15:42:13.745  INFO 8212 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 15:42:13.955  INFO 8212 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2893de87: startup date [Sun May 27 15:42:12 CST 2018]; root of context hierarchy
2018-05-27 15:42:14.006  INFO 8212 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello]}" onto public java.lang.String com.example.hello.controller.HelloWorld.say()
2018-05-27 15:42:14.012  INFO 8212 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-05-27 15:42:14.013  INFO 8212 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-05-27 15:42:14.038  INFO 8212 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 15:42:14.038  INFO 8212 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 15:42:14.187  INFO 8212 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-05-27 15:42:14.447  INFO 8212 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2018-05-27 15:42:14.451  INFO 8212 --- [           main] com.example.hello.HelloWorldApplication  : Started HelloWorldApplication in 2.531 seconds (JVM running for 3.285)

说明项目已启动。在浏览器中输入http://localhost:8080/hello进行访问。会看到:Hello World输出。

自此,就开启了Spring Boot的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值