Spring注解

来源:互联网 发布:php短信接口类型 编辑:程序博客网 时间:2024/06/05 20:02

就是记录Spring的注解,遇到了就加上点。

Spring注解前提

需要在Spring的配置文件中,做注解的声明配置:

<!-- 启用注解方式注入bean--><context:annotation-config /><!-- 指定annotation浏览包路径,启用时可省略<context:annotation-config /> --><context:component-scan base-package="com.xx.xx" />

两种可选的配置,一般选择下面一种的比较多。当然是用了注解的声明方式,还是可以再Spring的配置文件中继续写bean的,一样好使。


一、@Component、@Repository、@Service及@Controller

这四个是一组注解,他们都是为bean定义的注解,区别在于

  • @Service用于标注业务层组件
  • @Controller用于标注控制层组件(如struts中的action)
  • @Repository用于标注数据访问组件,即DAO组件
  • @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

一般来说呢,@Component尽量少用,既然Java区分了不同的组件用不同的注解,肯定有一定的道理或者在后续版本会增加一些小黑科技呢。那么我们就看看其他几个注解的常用方式:

1、 @Controller
@SuppressWarnings("serial")@Controller("carAction")@Scope("prototype")public class CarAction extends BaseAction {....}

使用@Controller注解标识CarAction 之后,就表示要把CarAction 交给Spring容器管理,在Spring容器中会存在一个名字为”carAction“的action,这个名字是根据@Controller(“carAction”)中的value名来取的。注意:如果@Controller不指定其value@Controller,则默认的bean名字为这个类的类名首字母小写,如果指定value@Controller(value=”carAction”)或者@Controller(“carAction”),则使用value作为bean的名字

这里的CarAction还使用了@Scope注解,@Scope(“prototype”)表示将Action的范围声明为原型,可以利用容器的scope=”prototype”来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。spring 默认scope 是单例模式(scope=”singleton”)。

2、@ Repository,@ Service

用法基本与@Controller一致,举例看下就好了:

@Service("carService")public class CarServiceImplimplements CarService{....}
@Repository("carDao")public class CarDaoImpl implements CarDao {....}

二、@autowired 和@resource

相同点:@Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上。
不同点

  1. @Autowired属于Spring的;@Resource为JSR-250标准的注释,属于J2EE的。(了解)
  2. @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired()@Qualifier("baseDao")private BaseDao baseDao;

3.@Resource(这个注解属于J2EE的),默认安装名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

@Resource(name="baseDao")private BaseDao baseDao;

三、@SuppressWarnings()

@SuppressWarnings不是Spring的注解,属于J2SE的。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。就是说,老子代码就这样了,你别警告了。

@SuppressWarnings 批注允许你选择性地取消特定代码段(即类或方法)中的警告。其中的想法是当你看到警告时,你将调查它,如果你确定它不是问题,你就可以添加一个 @SuppressWarnings 批注,以使你不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止你对警告无动于衷 — 你看到的每一个警告都将值得注意。

讲道理呢,一般的警告都不会影响代码的运行,程序员都是只关注错误和异常,不关注警告。有不少同学加这个注解有点强迫症的感觉,不想让代码带着黄点点,影响打断点。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 穿坡跟凉鞋容易打滑摔倒怎么办 运动鞋烂了个口怎么办 运动鞋的网烂了怎么办 运动鞋鞋一个一个高一个低怎么办 淘宝预售水果不发货怎么办 淘宝评价忘记晒图了怎么办 参加水果展没有实物怎么办 没做过运营面试怎么办 苹果5s16g内存满了怎么办 618天猫有活动淘宝没有怎么办 天猫国际买到假货怎么办 天猫恶意差评怎么办 天猫删除差评被扣分了怎么办 天猫收到差评怎么办 天猫给差评骚扰怎么办 天猫客户差评怎么办 天猫没法给差评怎么办 天猫上限购一件怎么办 拍下商品不发货怎么办 天猫红包过期了怎么办 买天猫店被中介骗了钱怎么办 速卖通假货纠纷怎么办 天猫新开店被恶意拍下怎么办 新开的天猫店没有生意怎么办 银行的支票丢了怎么办 天猫积分用光了怎么办 淘宝店没有无线流量怎么办 京东卖家不发货怎么办会自动打款 一件代发顾客如果退款怎么办 京东以前的账号怎么办 旺旺对话框订单页面变宽了怎么办 阿里巴巴店铺上传图片很模糊怎么办 天猫跨店优惠券用了退货怎么办 淘宝店铺没流量没访客怎么办 京东微信和Q端黑号了怎么办? 买不了运费险了怎么办 拼多多5天不发货怎么办 天猫店手机发货成定制机怎么办 天猫退货上门取件退两件怎么办 买二手苹果手机没有账号怎么办 手机淘宝足迹不更新怎么办