Spring注解

目录

什么是注解?

为什么使用注解?

Spring常用注解

SpringMVC常用注解

@Controller

@Autowired

@Resource

@Autowired和@Resource的区别


什么是注解?

注解(Annotation)是JDK1.5以及之后的版本引入的.

使用在创建文档,代码的依赖性,执行基本编译时检查,是以@注解名的形式在代码中实现.

根据参数个数可分为三类:

  1. 标记注解
  2. 单值注解
  3. 完整注解

注解不会影响到程序,只作为一个标识的形式存在,可以通过反射机制访问

为什么使用注解?

传统的Spring做法使用xml文件来注入bean,配置等,这样做会有两个缺点:

  1. 如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么.xml文件又会非常多。总之这将导致配置文件的可读性与可维护性变得很低。
  2. 在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率.

为了解决这两个问题,Spring引入了注解.

好处:通过"@XXX"的方式,让注解与Java Bean紧密结合,既大大减少了配置文件的体积,又增加了Java Bean的可读性与内聚性。

Spring常用注解

  • @Component :标注一个普通的spring Bean类。
  • @Repository:标注一个DAO层组件类。
  • @Service:标注一个业务逻辑组件类。
  • @Controller:标注一个控制器组件类。

日常开发Spring中这些注解很常见@Component、@Repository、@Service、@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型。

@Component可以代替@Repository、@Service、@Controller,因为这三个注解是@Component标注的.

SpringMVC常用注解

  • @Controller
  • @RequestMapping 
  • @Resource
  • @Autowired 
  • @ModelAttribute
  • @SessionAttributes 
  • @PathVariable
  • @requestParam
  • @ResponseBody 
  • @Repository 

@Controller

        @Controller声明该类为SpringMVC中的Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。

@Autowired

        @Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。

        @Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。

@Resource

@Resource注解与@Autowired注解作用非常相似

@Resource的装配顺序:

  1. @Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
  2. 指定了name或者type则根据指定的类型去匹配bean
  3. 指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错

@Autowired和@Resource的区别

区别:

        1.@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配

        2.@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了

建议:

        Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。

总结:

相同点: @Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。

不同点:

        (1)提供方

        @Autowired是Spring的注解,@Resource是javax.annotation注解,而是来自于JSR-250,J2EE提供,需要JDK1.6及以上。

        (2) 注入方式

        @Autowired只按照Type 注入;@Resource默认按Name自动注入,也提供按照Type 注入.

        (3):属性
        @Autowired注解可用于为类的属性、构造器、方法进行注值。默认情况下,其依赖的对象必须存在(bean可用),如果需要改变这种默认方式,可以设置其required属性为false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值