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,都可以写在字段上,或者方法上。
不同点:
- @Autowired属于Spring的;@Resource为JSR-250标准的注释,属于J2EE的。(了解)
- @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 批注,以使你不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止你对警告无动于衷 — 你看到的每一个警告都将值得注意。
讲道理呢,一般的警告都不会影响代码的运行,程序员都是只关注错误和异常,不关注警告。有不少同学加这个注解有点强迫症的感觉,不想让代码带着黄点点,影响打断点。
- spring注解--组合注解
- Spring注解
- Spring注解
- Spring注解
- Spring注解
- Spring注解
- Spring 注解
- Spring注解
- Spring注解
- Spring注解
- spring 注解
- spring 注解
- spring注解
- Spring 注解
- Spring 注解
- spring 注解
- spring 注解
- spring 注解
- Mac下抓包工具Charles初步使用
- 红黑树--(上)
- 最长递增子序列A (完美2017实习生)
- 通过new Scanner(System.in)创建一个Scanner,命令行输出
- Android之Launcher分析和修改3——Launcher启动和初始化
- Spring注解
- lintcode ----排颜色 II
- 购物网站的推荐算法-个性化推荐算法中如何处理买了还推
- HTML5+规范:OAut(管理客户端的用户授权登录验证功能)
- 1.4 单片机开发软件环境搭建
- Redis 和 Memcached 的区别
- OSGI实战总结
- C语言练习题每练 4 求数组平均,最大,最小数
- PHP自动化测试(一)make test 和 phpt