使用SpringBoot 创建一个Maven 工程

使用SpringBoot 创建一个Maven 工程

环境

   -jdk 1.8:Spring Boot 推荐jdk1.7及以上;

   -maven3.x:maven 3.3以上版本;

Maven 设置

给maven 的settings.xml配置文件的profiles标签添加:(设置使用的jdk版本)


  jdk-1.8
  
    true
    1.8
  
  
    1.8
    1.8
    1.8
  

开发工具中的maven设置为自己配置的maven

使用SpringBoot 创建一个Maven 工程

1、导入SpringBoot 相关的依赖

    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
        
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
    

2、编写一个主程序,启动Spring Boot 主应用

package cn.clboy.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author cloudlandboy
 * @Date 2019/11/13 下午2:58
 * @Since 1.0.0
 * springBootApplication:标注一个主程序类,表示这个是一个Springboot应用
 */

@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {
        //启动
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}

其中使用了 @SpringBootApplication 注解与 SpringApplication 的run 方法

3、编写一个Controller

package cn.clboy.springboot.controller;

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

/**
 * @Author cloudlandboy
 * @Date 2019/11/13 下午3:05
 * @Since 1.0.0
 * RestController:是spring4里的新注解,是@ResponseBody和@Controller的缩写。
 */

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "hello SpringBoot,this is my first Application";
    }
}

@RequestMapping 分发路径,@RestController 标记为该类为一个控制类

4、运行主程序Main分发测试

5、访问 localhost:8080/hello

简化部署

1、添加maven 插件


    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

2、使用mvn package 进行打包

3、进入打包好的jar 包所在目录

4、使用 java -jar jar包名称  运行

步骤如下:

pom.xml 文件中添加插件后,运行package如图所示

使用SpringBoot 创建一个Maven 工程_第1张图片

然后运行jar

使用SpringBoot 创建一个Maven 工程_第2张图片

进行访问

使用SpringBoot 创建一个Maven 工程_第3张图片

 

Hello World探究

依赖

 
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
        
    

    
  
    org.springframework.boot
    spring-boot-dependencies
    2.2.1.RELEASE
    ../../spring-boot-dependencies
  

启动器

         
            org.springframework.boot
            spring-boot-starter-web
        

Spring-boot-starter-web:

     spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;

     Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

主程序类,主入口类

@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {
        //启动
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}

@SpringBootApplication:

           Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

看一下@SpringBootApplication这个注解类的源码

@Target({ElementType.TYPE})    //可以给一个类型进行注解,比如类、接口、枚举
@Retention(RetentionPolicy.RUNTIME)    //可以保留到程序运行的时候,它会被加载进入到 JVM 中
@Documented    //将注解中的元素包含到 Javadoc 中去。
@Inherited    //继承,比如A类上有该注解,B类继承A类,B类就也拥有该注解

@SpringBootConfiguration

@EnableAutoConfiguration

/*
    *创建一个配置类,在配置类上添加 @ComponentScan 注解。
    *该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 。
*/
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication

@SpringBootConfiguration:Spring Boot的配置类;标注在某个类上,表示这是一个Spring Boot的配置类;

 @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Configuration
 public @interface SpringBootConfiguration

@Configuration:配置类上来标注这个注解;

配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration 

@EnableAutoConfiguration:开启自动配置功能;

以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

@Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Inherited
 @AutoConfigurationPackage
 @Import({AutoConfigurationImportSelector.class})
 public @interface EnableAutoConfiguration

@AutoConfigurationPackage:自动配置包

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})
public @interface AutoConfigurationPackage

@Import:Spring的底层注解@Import,给容器中导入一个组件

导入的组件由org.springframework.boot.autoconfigure.AutoConfigurationPackages.Registrar将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;

使用SpringBoot 创建一个Maven 工程_第4张图片

这里controller包是在主程序所在的包下,所以会被扫描到,我们在springboot包下创建一个test包,把主程序放在test包下,这样启动就只会去扫描test包下的内容而controller包就不会被扫描到,再访问开始的hello就是404

使用SpringBoot 创建一个Maven 工程_第5张图片

@Import({AutoConfigurationImportSelector.class})

AutoConfigurationImportSelector.class将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;

有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;

使用SpringBoot 创建一个Maven 工程_第6张图片

Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们完成了

你可能感兴趣的:(Java,java,spring,boot,spring)