Java开发常用注解

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事务,
这么做有两个缺点:
1.如果所有的内容都配置在.xml文件中,会导致.xml文件过大;如果按需求分开.xml文件,又会导致.xml文件过多。总之这会使得配置文件的可读性与可维护性变得很低。
2.开发中,在.java文件和.xml文件之间不断切换,是一件麻烦的事。同时这种思维上的不连贯也会降低开发的效率。

为了解决这两个问题,Spring引入了注解,通过**@注解名**的方式,让注解与Java Bean紧密结合,既大大减少了配置文件的体积,又增加了Java Bean的可读性与内聚性。

Jdk自带注解
@Override   重写, 标识覆盖它的父类的方法
@Deprecated   已过期,表示方法是不被建议使用的
@SuppressWarnings 压制警告,抑制警告

Spring注解
@Controller 控制层,使其变为Controller类
@Service 用于标注业务层组件,更加简化.xml文件配置
@RequestMapping 响应一个WEB请求地址, 当JSP页面向这个地址发送请求时,该方法会被调用。
@Responsebody 常用于ajax异步请求,解析成json格式对象
@Resource 默认按照名称进行装配,找不到再按type去匹配,名称可以通过name属性进行指定(J2EE)
@Autowired 默认按照类型自动装配bean(Spring)
@Path 处理REST请求,接口路径
@Method 指定请求的method类型, GET、POST、PUT、DELETE等;

AOP相关注解
@Aspect 声明一个切面(类上。使用@After、@Before、
@Around 定义建言(advice),可直接将拦截规则
(切点)作为参数。
@After 在方法执行之后执行(方法上)
@Before 在方法执行之前执行(方法上)
@Around 在方法执行之前与之后执行(方法上)
@PointCut 声明切点。在java配置类中使用
@EnableAspectJAutoProxy 注解开启Spring对AspectJ代理的支持(类上)

当你需要定义某个类为一个bean,则在这个类的类名前一行使用**@Service(“XXX”)**,就相当于讲这个类定义为一个bean,bean名称为XXX;

当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用**@Resource(name=“xxx”)**,相当于为该属性注入一个名称为xxx的bean。

Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。
  @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
  @Resource装配顺序
  1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

先码后续…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值