spring 常见注解梳理一下下

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feifuzeng/article/details/81782382

注解的作用:

       spring容器是通过把java类注册成bean进行管理的,把java类变成bean有两种方式,一种是通过xml文件进行配置,把需要的类注册成bean,还有一种方式就是注解,注解的方式只需要在需要的类前边加上注解,spring扫描到注解就能把被注解的类自动注册成bean,不同的注解可以被注册成不同的bean,相对于xml配置,使用注解更为方便快捷。也因此越来越多的框架都支持注解配置而放弃xml配置。所以总得来说,注解的作用就是代替手动配置吧,只需要在适当的位置标注一下,就能让框架自己完成具体的配置过程。

常见spring注解:

@Component  标注一个普通的spring bean 类
@Controller   标注一个控制器组件类,它实现自动检测类路径下的组件并自动注册成bean,如果想自动检测生效,还需要在配置文件上加上以下代码:
<content:component-base-package=”org.springframework.samples.petclinic.web”>
@Service   标注一个业务逻辑组件类
@Repository  标注一个DAO组件类

首先看一下不用注解时spring是怎么在xml文件上配置beans:
<bean  id=”login” class=”com.agd.controller.login”>
<property name=”” ref=””>
</bean>
其中id是为beans取得名字,class是需要被变成bean的类的路径。
<property>是假如这个类需要执行setter方法的话所做的配置,一般来说就是当前这个类需要引用别的类,而别的类里有setter方法,name是指定执行哪一个setter方法,ref或value指定传入setter的参数。当传入参数是别的类(beans)时使用ref,为普通类型时使用value。

这是Spring提供的四种基础注解,假设有一个类放在com.zgd.controller的包下,名字为login,使用xml注解就需要在spring的配置文件上加上
<bean id=”login” class=”com.agd.controller.login”><property name=””  value/ref=””></bean>
使用注解的话就可是省略这种配置,只需要在login类的前边加注解就可以了,还能根据不同的功能加上不同的注解,使之实现不同的bean配置。但是如果想让容器自动扫描带注解的类的话,我们需要给它设置好扫描路径,扫描路径就是类所在的包的路径,应该在spring的配置文件中加上
<content :component-scan base-package=”com.zgd.controller”>
这样的代码。注解生成的bean是以类名为bean名的,当然也可以注解的时候指定,比如
@Component(“login”)
按我的理解,就是容器自己new了一个com.agd.controller.login对象吧。

@Resource
@Autowired
@RequestMapping()

@RequestParam: 将请求中带的参数绑定到被注解标注的参数上去,使用方法:
Public void login(@RequestParam(value=”username” required=”true”) String username){}
这就表示把请求带过来的参数username赋值给方法中username这个参数。Required代表参数是否必须,可以不写,默认为true,当不能确定请求中存在value的值得这个参数的时候,就必须把设置required的值为false
@RequestBody: 就是把请求报文中的请求体直接全部转换成java类型供在类和方法中使用。例如:
Public void login(@RequestBody String s){}
这就是把请求这个方法的请求的报文中的报文体自动转换一下绑定给方法的参数变量s。
@ResponseBody:将内容或对象转换一下作为响应报文的报文体返回去。一般返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。
@Param:参数的解释,一般写在注释里面。
@Override:  重写,当子类继承了父类中的方法之后,想要重写其中的一些方法就可以使用这个注解。
@JoinTable:(出现在RoleEntity.java),表示java类和数据库表的映射
关系,相关还有列的映射主键的映射等,具体待研究。
@Transational:  spring事务管理的注解,被注解的方法或类就自动被注册成事务接收spring容器的管理,具体使用请参考:
事务管理的认识与使用 
@syschronized:实现java的同步机制。用了这个相当于加同步锁。具体使用待研究。

  • @RequestBody:将json格式的数据转为java对象。
  • @ResponseBody:将Java对象转为json格式数据

猜你喜欢

转载自blog.csdn.net/feifuzeng/article/details/81782382