使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析

      • 一、新建Spring Boot项目
        • 1.1 创建项目Create New Project
        • 1.2 选择Spring Initializr,同时选择JDK版本
        • 设置Group Artifact,在Type处选择Maven管理项目,打包Packaging为Jar
        • 1.3 选择依赖为Web,Spring Boot版本号选择为2.0.3
        • 1.4 设置Project name和Project location
        • 1.5 新建Controller
        • 1.6 启动项目,并通过浏览器访问
      • 二、pom.xml简介
      • 三、Java代码解析
        • 3.1 主程序入口
        • 3.2 @SpringBootApplication
        • 3.3 @SpringBootConfiguration
        • 3.4 @EnableAutoConfiguration

一、新建Spring Boot项目

1.1 创建项目Create New Project

使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第1张图片

1.2 选择Spring Initializr,同时选择JDK版本

使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第2张图片

设置Group Artifact,在Type处选择Maven管理项目,打包PackagingJar

使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第3张图片

1.3 选择依赖为WebSpring Boot版本号选择为2.0.3

使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第4张图片

1.4 设置Project nameProject location

使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第5张图片

1.5 新建Controller

使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第6张图片
如图,新建a.hello.controller包,并在该包下新建HelloWorldController.java文件,代码如下:

@RestController
public class HelloWorldController {

    @RequestMapping(name = "/index", method = RequestMethod.GET)
    public String index() {
        return "Hello World";
    }

}

1.6 启动项目,并通过浏览器访问

运行SbDemoApplication.java,可以在控制台查看启动log。
通过浏览器访问http://localhost:8080/index,可在页面看到Hello World输出。
至此,Spring Boot的第一个应用HelloWorld搭建完毕。

二、pom.xml简介

具体描述解释信息,都在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>

    
    <groupId>com.happy.sbgroupId>
    <artifactId>sb_demoartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>jarpackaging>

    <name>sb_demoname>
    <description>Demo project for Spring Bootdescription>

    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.3.RELEASEversion>
        <relativePath/> 
        
    parent>

    <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>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-configuration-processorartifactId>
            <optional>trueoptional>
        dependency>
    dependencies>

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


project>

三、Java代码解析

3.1 主程序入口

使用@SpringBootApplication来标注一个主程序类,表明这是一个SpringBoot应用

@SpringBootApplication
public class SbDemoApplication {

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

3.2 @SpringBootApplication

该注解标注类为Spring Boot的主配置类,Spring Boot应该运行该类的main方法来启动Spring Boot应用。

该注解是一个复合注解,如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    // 略略略
}

3.3 @SpringBootConfiguration

标注在某个类上,表示这是一个Spring Boot的配置类。
其源码为:

@Configuration
public @interface SpringBootConfiguration {
}

@Configuration表示该类是一个配置类(类似xml配置文件),配置类也是容器中的一个组件@Component

3.4 @EnableAutoConfiguration

开启Spring Boot自动配置功能

其源码为:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

    Class[] exclude() default {};

    String[] excludeName() default {};
}

@AutoConfigurationPackage:自动配置包
@Import:Spring的底层注解,给容器导入组件
AutoConfigurationImportSelector:导入组件选择器,将所有需要导入的组件以全类名形式返回,这些组件会被添加到容器中,其实就是给容器导入非常多的自动配置类(xxAutoConfiguration),并且配置好这些组件,
使用IntelliJ Idea创建Spring Boot项目及pom.xml和注解解析_第7张图片
有了这自动配置类,就免去了手动编写配置注入功能组件等工作。

SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将以前我们需要自己配置的内容,自动配置类都帮我们配置好了。
J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar中。

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