spring下的几种注解
2015-08-15 11:32
495 查看
spring中存在以下几种常见的注解:
@Component、@Repository、@Service、@Controller、@Resource、@Autowired、@Qualifier
注解说明:
|- - -| @Repository: 用于标注数据访问组件,即DAO组件。
|- - -| @Service: 用于标注业务层组件(我们通常定义的service层就用这个)。
|- - -| @Contrller: 用于标注控制层组件
|- - -| @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
以上几个注解是当你需要定义某个类为一个bean,则在这个类的类名前一行使用以上注解中的一种,如@Service(“XXX”),就相当于将此类定义为一个bean,bean名称为XXX; 这几个是基于类的,我们可以定义名称,也可以不定义,不定义会默认以类名为bean的名称(类首字母小写)。
注解使用
当我们需要在某个类中定义被注解标注的类作为一个属性时,我们则要使用以下三个注解:
@Resource、@Autowired、@Qualifier
再讲解使用之前,先编写几个类:
回到前面说的,当需要在某个类中定义被注解的类作为属性时,我们则可以使用@Resource或@AutoWired,比如
它们的区别如下:
@Resource,它是javax.annotation.Resource; 这个包中,也就是说是javaEE中的,并不是spring中的,而且@Resource(“xxx”) 是可以定义bean名称的,就是说我这个属性要用那个bean来赋值。
@Autowired,它是org.springframework.beans.factory.annotation.Autowired 是这个包中,它是spring的包中的,而且它没有@Autowired(“xxx”),那我要为这个bean定义名称怎么办这个时候可以用@Qualifier(“xxx”), 这个也是spring中的。
我们在定义一个Dao的实现类DaoImpl2
此时,如果我们要使用DaoImpl2作为一个类的属性时,则必须要写成如下形式
当被注解的类指定名称时,也就是@Repository(“???”)时,则我们必须写成如下形式
也就是说,定义的属性名称必须与@Repository(“???”)中的名称保持一致。
另一种写法是:
或
@Component、@Repository、@Service、@Controller、@Resource、@Autowired、@Qualifier
注解说明:
|- - -| @Repository: 用于标注数据访问组件,即DAO组件。
|- - -| @Service: 用于标注业务层组件(我们通常定义的service层就用这个)。
|- - -| @Contrller: 用于标注控制层组件
|- - -| @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
以上几个注解是当你需要定义某个类为一个bean,则在这个类的类名前一行使用以上注解中的一种,如@Service(“XXX”),就相当于将此类定义为一个bean,bean名称为XXX; 这几个是基于类的,我们可以定义名称,也可以不定义,不定义会默认以类名为bean的名称(类首字母小写)。
注解使用
当我们需要在某个类中定义被注解标注的类作为一个属性时,我们则要使用以下三个注解:
@Resource、@Autowired、@Qualifier
再讲解使用之前,先编写几个类:
//控制层 @controller public class TestController { public void say() { System.out.println("I am a good boy"); } }
//service层 @service public class TestService { @Resource private Dao Dao; public void add(){ Dao.add(); }
//定义Dao接口 public interface Dao { public void add(); }
//定义实现DAO类,DAO层 @Repository public class DaoImpl implements Dao{ public void add(){ System.out.println("调用了dao"); } }
回到前面说的,当需要在某个类中定义被注解的类作为属性时,我们则可以使用@Resource或@AutoWired,比如
@Resource private Dao dao;
@Autowired private Dao dao;
它们的区别如下:
@Resource,它是javax.annotation.Resource; 这个包中,也就是说是javaEE中的,并不是spring中的,而且@Resource(“xxx”) 是可以定义bean名称的,就是说我这个属性要用那个bean来赋值。
@Autowired,它是org.springframework.beans.factory.annotation.Autowired 是这个包中,它是spring的包中的,而且它没有@Autowired(“xxx”),那我要为这个bean定义名称怎么办这个时候可以用@Qualifier(“xxx”), 这个也是spring中的。
我们在定义一个Dao的实现类DaoImpl2
@Repository public class DaoImpl2 implements Dao{ public void add(){ System.out.println("调用了dao2"); } }
此时,如果我们要使用DaoImpl2作为一个类的属性时,则必须要写成如下形式
@Resource private Dao daoImpl2;
当被注解的类指定名称时,也就是@Repository(“???”)时,则我们必须写成如下形式
@Resource private Dao ???;
也就是说,定义的属性名称必须与@Repository(“???”)中的名称保持一致。
另一种写法是:
@Resource(???) private Dao * * *;
或
@AutoWired @Qualifier(???) private Dao * * *;
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- java教程之java注解annotation使用方法
- 基于Spring框架的Shiro配置方法
- Spring MVC中上传文件实例
- Java注解之Retention、Documented、Inherited介绍
- 实例讲解Java的Spring框架中的AOP实现
- 解析Java中如何获取Spring中配置的bean
- Spring的注解配置与XML配置之间的比较
- java Spring整合Freemarker的详细步骤
- Java注解详细介绍