Spring Boot 的常用 API 说明

1、SpringApplication 类

作用:用于启动 Spring Boot 的程序,根据传入的类的声明的注解来决定不同的启动方式

示例代码:

 1 package org.ranger;
 2 import org.springframework.boot.SpringApplication;
 3 import org.springframework.boot.autoconfigure.SpringBootApplication;
 4 //使用 SpringBoot 自动配置程序
 5 @SpringBootApplication
 6 public class Application {
 7      public static void main(String[] args) {
 8              //执行当前类,根据@SpringBootApplication 的配置,启动 SpringBoot 程序
 9             SpringApplication.run(Application.class, args);
10      }
11 }

2、@EnableAutoConfiguration 注解

注解的声明:

 1 @SuppressWarnings("deprecation")
 2 @Target(ElementType.TYPE)
 3 @Retention(RetentionPolicy.RUNTIME)
 4 @Documented @Inherited
 5 @AutoConfigurationPackage @Import(EnableAutoConfigurationImportSelector.class)
 6 public @interface EnableAutoConfiguration {
 7     String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
 8     Class<?>[] exclude() default {};
 9     String[] excludeName() default {};
10 }

作用:启动程序时,告诉 SpringApplication 启动对象使用 SpringBoot 的默认配置

只要在 SpringBoot 项目的入口配置了 @EnableAutoConfiguration,SpringBoot 框架启动时就会自动根据你导入的 jar 包来加载 spring-boot-autoconfigure-1.5.4.RELEASE-sources.jar 中的 xxxAutoConfiguration 配置类,使用其默认配置。

属性说明:

  exclude 属性:使用 Class 格式的方式,排除默认自动启动中不需要的配置类

excludeName 属性:使用类的限制名的方式,排序默认自动启动中不需要的配置类

3、@SpringBootApplication 注解

注解说明:

 1 @Target(ElementType.TYPE)
 2 @Retention(RetentionPolicy.RUNTIME)
 3 @Documented
 4 @Inherited
 5 @SpringBootConfiguration
 6 @EnableAutoConfiguration
 7 @ComponentScan(excludeFilters = {
 8     @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
 9     @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
10 public @interface SpringBootApplication {
11    @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude")
12    Class<?>[] exclude() default {};
13    @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "excludeName")
14    String[] excludeName() default {};
15    @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
16    String[] scanBasePackages() default {};
17    @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
18    Class<?>[] scanBasePackageClasses() default {};
19 }

  根据注解的声明可以得出:@SpringBootApplication 注解也是启动 Springboot 的默认配置。只是 在@EnableAutoConfiguration 注解的基础上增加了扫描包@ComponentScan 和 设置类为配置类 @SpringBootConfiguration 注解。实现了将给类设置为配置类、扫描指定范围的类创建对象到容器里面,并且自动加载Spring Boot默认配置。

属性说明:

  ① basePackages 属性 @SpringBootApplication 默认扫描的范围是使用该注解的当前的类的包以及子包,如果要指定其他 范围的包,可以是 basePackages 指定。

  ② basePackageClasses 属性 用于精确指定哪些类需要创建对象加载到 Spring 容器里面。

  ③ exclude 属性 通过 Class 的方式排除不扫描的类,就是该类不创建对象。

  ④ excludeName 属性 通过类的全限制名的方式,排除不扫描的类,指定的类不会在容器中创建对象。

4、@AutoConfigureBefore 注解

注解说明:

  指定在 SpringBoot 框架自动配置的配置类执行完成之前,执行指定的自定义的配置类。 如果放在 Application 入口类,表示在所有自动配置的配置类还没有可以就先加载自定义的配置 类。

  @AutoConfigureBefore 注解属性:

    value:使用类的方式指定自动配置类

    name:使用类的全限制名(字符串)类指定配置类

示例代码:

  ① 创建一个普通的类,没有任何注解

 1 package cn.mgy.utils;
 2 /**
 3    * 创建一个没有扫描注入容器注解的类
 4    * @author ranger
 5 * */
 6 public class TestUtils {
 7     /**
 8       * 返回测试信息
 9       * @return
10       */
11       public String test(){
12           return "-测试注入对象成功-";
13       }
14 }

  ② 创建一个自定义配置类,注入普通的类的Spring容器

 1 package cn.mgy.config;
 2
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.Configuration;
 5
 6 package cn.mgy.config;
 7
 8 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 9 import org.springframework.context.annotation.Bean;
10 import org.springframework.context.annotation.Configuration;
11
12 import cn.mgy.utils.TestUtils;
13
14 /**
15  * 创建一个自定义的配置类
16  * @author ranger
17  *
18  */
19 @Configuration
20 public class MyConfiguration {
21     /**
22      * 返回一个对象到容器
23      * @return
24      */
25     @Bean(name="testUtils")
26     //表示如果Spring容器有TestUtils的对象就不执行这个方法在创建一次了。
27     @ConditionalOnMissingBean(TestUtils.class)
28     public TestUtils getTestUtils(){
29         TestUtils testUtils=new TestUtils();
30         return testUtils;
31     }
32
33 }

  ③ 在入口类配置加入自定义配置类

package cn.mgy;

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

import cn.mgy.config.MyConfiguration;

//使用SpringBoot自动配置程序
@SpringBootApplication
//在自动配置的配置类之前启动自定义的配置类
@AutoConfigureBefore(value=MyConfiguration.class)
public class Application {

    public static void main(String[] args) {
        //执行当前类,根据@SpringBootApplication的配置,启动SpringBoot程序
        SpringApplication.run(Application.class, args);

    }

}

  ④ 在 Controller 里面使用这个注入的对象

 1 package cn.mgy.controller;
 2
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Controller;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.bind.annotation.ResponseBody;
 7
 8 import cn.mgy.utils.TestUtils;
 9
10 @Controller
11 public class HelloController {
12
13     @Autowired
14     private TestUtils testUtils;
15
16     @RequestMapping(value="/")
17     @ResponseBody
18     public String say(){
19         System.out.println(testUtils.test());
20         return testUtils.test();
21     }
22
23 }

  ⑤ 测试,成功

5、@AutoConfigureAfter注解

  作用:指定在SpringBoot框架自动配置的配置类执行完成之后,然后执行指定的自定义的配置类。

6、@SpringBootTest注解

注解说明:用于使用JUnit测试SpringBoot程序,启动SpringBoot框架。测试SpringBoot一定要加上。

示例代码:

 1 package cn.mgy.test;
 2
 3 import java.sql.SQLException;
 4
 5 import javax.sql.DataSource;
 6
 7 import org.junit.Test;
 8 import org.junit.runner.RunWith;
 9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.boot.test.context.SpringBootTest;
11 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
12
13 @RunWith(SpringJUnit4ClassRunner.class)
14 //如果不加该注解,无法启动SpringBoot
15 @SpringBootTest
16 public class DataSourceTest {
17
18     @Autowired
19     private DataSource dataSource;
20
21     @Test
22     public void dataSource() {
23         try {
24             System.out.println(dataSource.getConnection());
25         } catch (SQLException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }
29     }
30
31 }

原文地址:https://www.cnblogs.com/maigy/p/10859480.html

时间: 2024-10-04 02:31:03

Spring Boot 的常用 API 说明的相关文章

Spring Boot构建RESTful API与单元测试

全套教程:http://git.oschina.net/didispace/SpringBoot-Learning 首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容. @Controller:修饰class,用来创建处理http请求的对象 @RestController:Spring4之后加入的注解,原来在@Control

Spring Boot基础-RESTfull API简单项目的快速搭建

Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTfull API简单项目的快速搭建 Spring Boot基础教程3-配置文件详解:Properties和YAML Spring Boot基础教程4-配置文件-多环境配置 Spring Boot基础教程5-日志配置-logback和log4j2 源码地址:https://github.com/roncoo/spring-boot-demo 一.搭建一个简单的RESTfull

创建 Spring Boot 项目常用的两种方式

在开发中,常用的创建的 Spring Boot 项目方式有两种,一种是使用 Spring Initializr , 一种是创建一个 Maven 工程,导入 Spring Boot 的依赖 使用 IDEA 的 Spring Initializr 的方式 选择 IDEA 的 File -> New -> Project 选择 Spring Initializr ,如下图: 在 Project Metadata 页面,输入 Group, Artifact ,Version, Name, Descri

spring boot中常用的配置文件的重写

@Configuration public class viewConfigSolver extends WebMvcConfigurerAdapter { /* spring boot 已经自动配置好了springmvc 配置好了viewResolver * 视图解析器(根据方法的返回值得到视图对象,视图对象决定如何渲染(转发或者重定向)) * 我们可以自己给容器中添加一个视图解析器 * ContentNegotiatingViewResolver就会将其组合进来*/ @Override pu

spring-boot实战【04】:Spring Boot构建RESTful API

@Controller:修饰class,用来创建处理http请求的对象@RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式.@RequestMapping:配置url映射 下面我们尝试使用Spring MVC来实现一组对User对象操作的RESTful API,配合注释详细说明在S

Spring Boot构建RESTful API

@Controller:修饰class,用来创建处理http请求的对象 @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式. @RequestMapping:配置url映射 RESTful API具体设计如下: 请求类型 URL 功能说明 GET /users 查询用户列表 PO

spring boot thymeleaf常用方式

js中使用for循环 <script type="text/javascript" th:inline="javascript"> /* <![CDATA[ */ for(var i=1;i<3;i++){ alert(i); } /* ]]> */ </script> js中取出数据 <script th:inline="javascript"></script> var gid

通过spring boot提供restful api

1 将返回设置为produces = "application/json" 返回给客户端json格式的response. 2 对各种异常的处理 各种异常如何返回给客户端? 各种异常通过ResponseEntity返回给客户端. 3 一种通用的处理方式 3.1 定义一个Exception对象 public class UserNotFountException extends RuntimeException{    private String userId; public UserN

Spring Boot 2 Rest Api Example

以下,将以一个post.get返回json数据格式的例子来讲解Rest Apis. 1. Maven Dependencies. 最重要的是 spring-boot-starter-parent 和 spring-boot-starter-web. Starter web 依赖包含了spring-webmvc, spring-web, hibernate-validator, tomcat-embed-core, tomcat-embed-el, tomcat-embed-websocket,