本文是转载文章,文章的来源:csdn博客
博主:李阿昀
转载文章: Spring的bean管理(注解方式)
转载原文地址:http://blog.csdn.net/yerenyuan_pku/article/details/69663779
转载说明:转载"Spring的bean管理(注解方式)"的前面部分的内容
Spring的bean管理(注解方式)
注解:代码中的特殊标记,注解可以使用在类、方法、属性上面,使用注解可实现一些基本的功能。注解的写法是@注解名称(属性=属性值)
。
使用注解创建对象
第一步,创建Web项目,引入Spring的开发包
除了导入Spring基本的Jar包外(可参考《Spring的概述》一文),还须导入Spring注解的Jar包,如下:
第二步,编写相关的类
在src目录下创建一个cn.itcast.anno包,并在该包下编写一个User类。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
第三步,创建Spring配置文件
-
在Spring配置文件中引入约束,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
在Spring配置文件中做些事情,即开启注解扫描。
- 1
- 2
注意:也可以这样开启注解扫描,如下:
- 1
但是这种开启注解扫描的方式,只会扫描属性上面的注解。实际开发中用到的并不多!故不推荐使用。
第四步,在创建对象所在的类上面使用注解实现
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
如若注解里面属性名称是value,则可以省略,所以上面的User类亦可这样写为:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
第五步,编写测试类
在cn.itcast.anno包下编写一个TestDemo单元测试类。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
测试即可。
Spring的bean管理中常用的注解
@Component(作用在类上)
创建对象的注解有四个:
@Component
@Repository
:用于对DAO实现类进行标注(持久层)。@Service
:用于对Service实现类进行标注(业务层)。@Controller
:用于对Controller实现类进行标注(WEB层)。
后三个注解是Spring中提供的@Component
的三个衍生注解(功能目前来讲是一样的),它们是为了让标注类本身的用途更清晰,Spring在后续的版本中会对其进行增强。
bean的作用范围的注解
@Scope
- singleton:单例,默认值
- prototype:多例
所以我们可通过注解设置创建对象是单例或者还是多实例的。这样User类的代码亦可写为:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
使用注解注入属性(对象)
这儿,我举个例子来说明如何使用注解注入(对象类型的)属性。
先创建业务层中的UserService类:
- 1
- 2
- 3
- 4
- 5
再创建持久层中的UserDao类:
- 1
- 2
- 3
- 4
- 5
以上两个类都创建在cn.itcast.anno包中。我们要实现的目的是在UserService类里面调用UserDao类的方法,这样我们就要在UserService类里面得到UserDao类的对象。之前是采用xml配置文件的方式来注入属性的,本文将使用注解的方式完成注入属性的操作。
-
在UserService类里面定义UserDao类型属性
- 1
在UserService类里面定义UserDao类型的属性,由于是使用注解的方式,故不需要手动生成set方法。
-
进行注解方式实现属性注入
-
创建UserDao类的对象和UserService类的对象
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
在UserService类里面注入UserDao类的对象,使用注解来实现。首先我使用
@Autowired
注解来实现。- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
注意:使用注解
@Autowired
,它不是根据名字去找Dao,而是默认按类型进行装配。
当然了,也可使用@Resource
注解来实现,如下:- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
注意,使用
@Resource
注解,它默认是按名称进行注入的。在实际开发中,我们也是使用@Resource
注解来注入属性的,注解@Autowired
用到的并不多。
-