springboot常用注释的讲解

时间:2022-10-12 16:41:49

1:@qualifier

@qualifier 注释指定注入 bean 的名称,这样歧义就消除了。所以@autowired 和@qualifier 结合使用时,自动注入的策略就从 bytype 转变成 byname 了。例子如下:

有一个接口:

?
1
2
3
public interface employeeservice {
  public string getemployeebyid(long id);
}

有两个实现类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@service("service")
public class employeeserviceimpl implements employeeservice{
  @override
  public string getemployeebyid(long id) {
    return "0";
  }
}
@service("service1")
public class employeeserviceimpl1 implements employeeservice{
  @override
  public string getemployeebyid(long id) {
    return "1";
  }
}

controller层调用service层:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@restcontroller
public class employeeinfocontrol {
  @autowired
  @qualifier("service"//括号里面的值是实现类@service时给类取得名字,加上此注解不会报错
  private employeeservice employeeservice;
 
  @requestmapping("/emplayee.do")
  public void showemplayeeinfo(){
    string employeebyid = employeeservice.getemployeebyid(1l);
    system.out.println("employeebyid值为"+employeebyid);
  }
}
//此时会报错 因为@autowired
//       private employeeservice employeeservice;
//注入的是service层的接口,此时有两个实现,不知道绑定的是哪个实现。
//此时应该在@autowired下面配合@qualifier注释使用,用来说明要绑定的具体是哪个实现类
//如上面所示

2:@restcontroller

注解在类上,表示这是一个控制层bean。常用于控制层类的前面,是@responsebody和@controller的合集 。

  • @responsebody:用该注解修饰的函数,会将结果直接填充到http的响应体中,一般用于构建restful的api,将java对象转为json格式的数据。
  • @controller:用于定义控制器类,在spring 项目中由控制器负责将用户发来的url请求转发到对应的服务接口(service层)。

3:@requestmapping

提供路由信息,负责url到controller中的具体函数的映射。

4:@springbootapplication

该注解用在运行类之上,相当于@enableautoconfiguration、@componentscan和@configuration的合集。 

  • @enableautoconfiguration:spring boot自动配置(auto-configuration)。
  • @componentscan:表示将该类自动发现(扫描)并注册为bean,可以自动收集所有的spring组件,包括@configuration类。我们经常使用@componentscan注解搜索beans,并结合@autowired注解导入。
  • @configuration:相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@configuration类作为项目的配置主类 ——可以使用@importresource注解加载xml配置文件。

5:@import

用来导入其他配置类。 

6:@autowired 

自动导入依赖的bean。

7:@service 

注解在类上,表示这是一个业务层bean。

8:@repository

注解在类上,表示这是一个数据访问层bean。使用@repository注解可以确保dao或者repositories提供异常转译,这个注解修饰的dao或者repositories类会被componetscan。 

9:@query  

自定义sql查询语句 

10:@entity  

用在实体类的前面,表示这是一个实体类。 

11:@table(name=“”) 

用在实体类的前面,一般和@entity一起使用,表示该实体类映射数据库中的某张表。

12:@column

表示实体类的某个属性映射为表中的某个字段,包含的设置如下:name:数据库表字段名;unique:是否唯一 ;nullable:是否可以为空 ;length:长度。

13:@id

该注释用在实体类中,写在哪个属性的前面,表示该属性映射到数据库中的字段为主键。

14:@generatedvalue 

表示主键的生成策略,和@id一起使用 

15:@transient 

表示该属性并非一个到数据库表的字段的映射,orm框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@transient。 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/weixin_40581455/article/details/85008995