SpringBoot的常用注解

  • @SpringBootApplication

    标注该类是一个主程序类
    eg:

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

/**
 *  @SpringBootApplication 来标注一个主程序类,说明是一个SpringBoot应用
 **/
@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
//        启动Spring应用。
//        传入的类必须要用@SpringBootApplication来注解
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}
  • @Controller

    标注该类是一个控制器类,通常与 @RequestMapping配合使用

  • @RequestMapping

    提供路由信息,负责URL到Controller中的具体函数的映射
    eg:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World";
    }
}
  • @ResponseBody

    表示该方法的返回结果直接写入HTTP response body中。
    eg:见上(@RequestMapping

在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。

  • @RestController

    @Controller@ResponseBody 的合集。表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
    eg:

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

@RestController
public class HelloController {
    
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World";
    }
}
  • @Component

    泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

  • @ConfigurationProperties(prefix=“XXX”)

    将配置文件中的属性值映射个组件中,@ConfigurationProperties用于告诉SpringBoot将本类中所有属性和配置文件中的相关配置进行绑定。
    prefix = “XXX” :配置文件下哪个下面的属性进行映射

只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能(使用@Component标识该组件是容器中的组件)

默认是读取全局配置文件中的参数,即application.properties或appli.yml文件

eg:

  • java 代码
//说明在容器中
@Component

//读取配置文件下的person
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
    private boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Pet dog;
    ...
}
  • yaml配置文件代码
person:
  name: 张三
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1, k2: v2}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 大黄
    age: 2

注意: 使用application.properties配置文件时,如果有中文,则需要注意编码问题。

  • @Autowired

    自动注入,通常配合 @ConfigurationProperties 使用。创建对象时使用该注解,对象不需要new来初始化,若配置文件中有默认值,则会使用配置文件中的值初始化。
    eg:

@Autowired
Person person;
  • @Value

    类似 @ConfigurationProperties,也是将配置文件的默认值赋值给组件成员,但是是一对一的,写起来比较麻烦。
    eg:

@Component
public class Person {

    /**
     * <bean class="Person">
     *      <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>
     * <bean/>
     */

    @Value("${person.last-name}")
    private String lastName;
    @Value("#{11*2}")
    private Integer age;
    @Value("true")
    private Boolean boss;

    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

@Value和@ConfigurationProperties的对比

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装(Map,对象)支持不支持
  • 如果只是在某个业务逻辑中需要获取配置一下文件中的值,使用@Value
  • 如果是专门写了一个javaBean来和配置文件映射,我们使用@ConfigurationProperties
  • @Validated

    自动校验功能,如果不满足设定的规则,会抛出异常
    eg:Email校验

@Validated
public class Person {
    @Email
    private String email;
    private String name;
    private int age;
    ...

如果email不符合合法的email格式,则会抛出异常

  • @PeopertySource(value = {“classpath=XXX”})

    加载指定配置文,需要搭配件 @ConfigurationProperties使用来指定prefix
    eg:

@PropertySource(value={"classpath:person.properties"})
@ConfigurationProperties(value = "person")
public class Person {
    private String name;
    private int age;
    private boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Pet dog;
    ...
}
  • @ImportResource(locations = {“classpath=XXX”})

    导入Spring的配置文件,让配置文件生效;SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件也不能自动识别,想让Spring的配置文件生效,需要使用 @ImportResource来标注在一个配置类上
    eg:

@ImportResource(locations = {"classpath:beans.xml"})
  • @bean(SpringBoot推荐给容器中加组件的方式,推荐使用全注解的方式)

    使用 @bean标识类为配置类
    eg:

/*
 * @Configuration:指明当前类是一个配置类,来替代之前的Spring配置文件
 *
 * 在配置文件中用<bean></bean>标签来添加组件
 */
@Configuration
public class MyAppConfig {

    @Bean
//    将方法的返回值添加到容器中;容器中这个组件的默认id就是方法名
    public HelloService helloService(){
        System.out.println("@bean给容器中添加组件了!");
        return new HelloService();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值