Spring常用注解

常用注解

@Controller:

     用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。

@Service:

     将自动扫描路径下面的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller。

@Component:

     用在mapping层 把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>

@RequestMapping:

     用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@Repository:

     @Repository(value="userDao")注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。

@Resource:

     当service需要使用spring创建的userDao实例时:@Resource(name = "userDao")注解告诉Spring,Spring把创建好的userDao注入给Service即可。

@Autowired:

     可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired是根据类型进行自动装配的。

@ReponseBody:

     将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据;在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

 

@Service用来标注业务层组件

@Controller用来标注控制层组件

@Repository用来标注Dao层组件,即数据访问层组件

@Component 泛指组件 当不好归类的时候 用这个做标注

 

@RequestParam:

后台获取参数的方式:request.getParameter("参数名")

通过注解获得

此注解使用方式:

  1. 参数和名字一致:@RequestParam String lid      如果注入时找不到lid这个名字 不会注入
  2. 参数和名字不一致:@RequestParam(name="lid") String id   提前指定name 后面的可以不一致
  3. 使用默认值:   @RequestParam(name="lid",defaultValue="new")  设置默认的其他值 这样就会把前端传来的值覆盖
  4. 注意事项:当你使用基本数据类型而非包装类型时

         @RequestParam(name="lid") int id  这个时候required=false的话就会出错 因为前端不传值的话 就为null 这样肯定会报错的

所以应该指定required = true 也可以不指定 因为它源代码中默认的就是true

 

元注解:

1.@Target,

    描述注解使用的范围:具体的类型在jdk枚举类ElementType中

     主要包括:packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量


2.@Retention,

    描述注解的生命周期,包括:SOURCE CLASS RUNTIME


3.@Documented,

    默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理

    javadoc用于根据注释生成api文档


4.@Inherited:参考 https://blog.csdn.net/HaHa_Sir/article/details/80753976  

   即在两个类之间存在继承关系,且父类标记的注解使用了 @Inherited 注解

   这样在子类反射获取注解的时候 也可以获取到父类的注解 但是反射父类不能获取到子类的注解

   如果去除@Inherited注解 则子类反射也不能获取父类的注解

 

@SuppressWarnings(value = "unchecked")

@SuppressWarnings(value = {"unchecked","rawtype"})

@SuppressWarnings(value = "all")

 

@RequestBody和@RequestParam注解:

前者:接收前端传递给后端的json字符串中的数据的(请求体中的数据的);

    而且使用时前端不能使用GET请求 因为其无请求体body 而应该使用POST请求

一个请求只能一个@RequestBody @RequestParam可以很多个。 而且两者可以组合使用

RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数

前者对应postman里的 from raw application/json后者对应 from  data

不写注解默认使用的是@RequestParam     即默认key-value的形式

 

@EqualsAndHashCode(callsuper = false) 

默认是false 但如果不写 这个注解会有警示信息 在用了@Data注解时候会出现

意思就是子类 equal和hashcode 生成的时候 不去考虑继承的父类的字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值