第一篇:构建第一个Spring Boot工程

简介

Spring Boot它的设计目的就是为简化开发,开启了各种自动装配,你不想写各种配置文件,引入相关的依赖就能迅速搭建起一个web工程。它采用的是建立生产就绪的应用程序观点,优先于配置的惯例。

建构工程

你需要:

  • jdk 1.8或以上
  • maven 3.0+
  • Idea(注:本系列教程全部用的IDEA作为开发工具)

打开Idea-> new Project ->Spring Initializr ->填写group、artifact ->钩上web(开启web功能)->点下一步就行了。

工程目录

创建完工程,工程的目录结构如下:

└── src
	└── main
		└── java
			└── package
				└── SpringbootApplication
		└── resouces
			└── statics
			└── templates
			└── application.yml
	└── test
└── pom
  • pom文件为基本的依赖管理文件
  • resouces 资源文件
  • statics 静态资源
  • templates 模板资源
  • application.yml 配置文件
  • SpringbootApplication程序的入口。

pom.xml


<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.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.5.3.RELEASEversion>
        <relativePath/> 
    parent>
    
    <groupId>com.chenjie.springboot.learngroupId>
    <artifactId>springboot-first-applicationartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>jarpackaging>
    <name>springboot-first-applicationname>
    <description>Demo project for Spring Bootdescription>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
    
project>

其中spring-boot-starter-web不仅包含spring-boot-starter,还自动开启了web功能。

功能演示

举个例子,建个Controller:

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

@RestController
public class HelloController {
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
}

启动SpringbootFirstApplication的main方法,打开浏览器localhost:8080,浏览器显示:
第一篇:构建第一个Spring Boot工程_第1张图片

遵循习惯优于配置

问:你没有做任何的web.xml配置
答:springboot为你做了
问:你没有做任何的sping mvc的配置
答: springboot为你做了
问:你没有配置tomcat 
答:springboot内嵌tomcat

Spring Boot在启动的时候为我们注入了哪些bean

在程序入口SpringbootApplication.java中加入:

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
	return args -> {

		System.out.println("Let's inspect the beans provided by Spring Boot:");

		String[] beanNames = ctx.getBeanDefinitionNames();
		Arrays.sort(beanNames);
		for (String beanName : beanNames) {
			System.out.println(beanName);
		}

	};
}

程序输出:

Let's inspect the beans provided by Spring Boot:
application
beanNameHandlerMapping
defaultServletHandlerMapping
dispatcherServlet
embeddedServletContainerCustomizerBeanPostProcessor
handlerExceptionResolver
helloController
httpRequestHandlerAdapter
messageSource
mvcContentNegotiationManager
mvcConversionService
mvcValidator
org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$DispatcherServletConfiguration
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$EmbeddedTomcat
org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration
org.springframework.boot.context.embedded.properties.ServerProperties
org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration
propertySourcesBinder
propertySourcesPlaceholderConfigurer
requestMappingHandlerAdapter
requestMappingHandlerMapping
resourceHandlerMapping
simpleControllerHandlerAdapter
tomcatEmbeddedServletContainerFactory
viewControllerHandlerMapping
...

在程序启动的时候,Spring Boot自动诸如注入了40-50个bean.

单元测试

现在编写一个简单的单元测试,通过端点模拟servlet请求和响应:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class SpringbootApplicationTests {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void getHello() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Greetings from Spring Boot!")));
    }

}

MockMvc来自Spring Test,并允许您通过一组方便的builder classes,发送HTTP请求到DispatcherServlet并作出断言关于结果。注意@AutoConfigureMockMvc与@SpringBootTest注入MockMvc实例一起使用。使用@SpringBootTest完毕后,我们要求创建整个应用程序上下文。另一种方法是让Spring Boot使用@WebMvcTest。仅创建上下文的Web层。在任何一种情况下,Spring Boot都会自动尝试查找应用程序的主应用程序类,但是如果要构建不同的东西,可以覆盖它,或缩小范围。

源码下载:https://github.com/chenjary/SpringBoot

你可能感兴趣的:(SpringBoot,Spring,Boot,学习)