SpringBoot常用注解详解

696 阅读3分钟

这是我参与更文挑战的第21天,活动详情查看: 更文挑战

1、@SpringBootApplication

这个注解是SpringBoot框架最重要核心的注解,用在主类上面,作用是定义Spring Boot的项目开启啦,以及各项能力的启动,用来标识这个是Spring Boot项目,一般就是插入在web层中的主类里面。

import org.springframework.boot.autoconfigure.SpringBootApplication;

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

2、@MapperScan

在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类。

加在启动类上,指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类

加在DataSourceConfig上,指定数据来源,配置文件等。

3、@Configuration

配置类的定义,指示对象是Bean定义的来源,如用于mysql、redis等中间件的配置文件中,Bean可以通过这个注解被发现。

4、@ComponentScan

组件扫描。ComponentScan做的事情就是告诉Spring从哪里找到bean。

告诉Spring哪个packages的用注解标识的类会被spring自动扫描并且装入bean容器。

@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。

5、@Repository

作用于持久层。

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

@Repository(value="testDao")

该注解是告诉Spring,让Spring创建一个名字叫“testDao”的TestDaoImpl实例。

当Service需要使用Spring创建的名字叫“testDao”的TestDaoImpl实例时,就可以使用@Resource(name = "testDao")注解告诉Spring,Spring把创建好的testDao注入给Service即可。

6、@Service

注解属于业务逻辑层,service或者manager层,修饰Service层的文件。

@Service public class UserService {

}

7、@RestController

原来返回json需要@ResponseBody和@Controller配合。

即@RestController是@ResponseBody和@Controller的组合注解。

8、@ResponseBody

用该方法是将返回结果写入到http返回结果中,如果使用了@RequestMapping,会先解析成跳转路径,但是加上了@responsebody,就可以将结果作为json结果返回。

9、@Component

注解@Component位于控制器、服务、仓储的顶级,它是任何Spring托管组件的通用构造型注解,这也就意味着,如果要在应用程序上下文中注册类,我们可以使用@Component注解进行注册。

10、@Bean

@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名,意思是产生一个bean,并交给spring管理。

11、@AutoWired

它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除set ,get方法。

12、@Qualifier

在需要自动注入java bean时,如果注入的是一个接口,而这个接口又有多个实现类,则会报错。

解决办法是在实现类上加@Service("别名"),在注入接口上增加@Qualifier("别名") 和@Autowired注解。

来看下源码:

public @interface Qualifier {

   String value() default "";

}

13、@RequestMapping

处理请求地址的映射

用于类和方法上,类上的 “请求地址” 是方法上的 “请求地址” 的父地址。一般会在类上设置该文件中所有接口的归类。比如下面的例子就表示这个类里都是test接口。

@RequestMapping(value = "/test")
@RestController
public class TestController {
@RequestMapping(value = "/getList", method = RequestMethod.POST)
 public Result getList(@RequestBody TestQuery query) {
        return null;
  }
}

14、@RequestParam 和 @RequestBody

用在参数前面,表示方法请求体。

public Result getList(@RequestBody TestQuery query)
@RequestParam String a =request.getParameter('a')。

15、@PathVariable

获取路径中的参数

16、@Profiles

该注解配合@Configuration可以使用java代码指定不同profile的配置,可以注解在类上,也可以注解在@Bean的方法上。

17、@ConfigurationProperties

读取配置文件中的属性,就比如像 datasource 文件。

@ConfigurationProperties(prefix = "test.data")
public class DataSourceProperty {

    /**
     * 数据库地址
     */
    private String url;

    /**
     * 账号
     */
    private String name;
}

 
#  数据库
test.data.url=
test.data.name=