spring中基于注解创建bean对象

spring中创建bean对象可以使用xml或者注解,一般来说使用注解会方便些。

使用注解前,先要将xml配置文件中的约束添加完整

spring中基于注解创建bean对象

约束内容我会放在最下面。其中有个标签<context:component-scan>这个标签会在所写包内搜索所有有注解的bean对象进行解析。

配置完xml,就可以在bean类上写注解了。

注解有四种:1、创建bean对象的注解。2、用于注入数据的注解。3、用于改变作用范围的注解。4、和生命周期有关的注解。

一、用于创建bean对象的注解:

这种注解有四种Component、Controller、Service和Repository

其中Component是通用注解,参数为value,value为此bean的名字可不写,默认为第一个字母为小写的类名。

spring中基于注解创建bean对象

Controller、Service和Repository是Component的子类,本质无大区别,方便阅读。一般Controller用于表现层,Service用于业务层,Repository用于持久层。

 

二、用于注入数据的注解

用于注入数据的注解有三种:1、AutoWired。2、Qualifier。3、Resource。

1:AutoWired。此注解用于属性自动注入,spring中基于注解创建bean对象

注入步骤为(以上图为例):首先在容器中寻找已经存在的IAccountDao或其子类的对象,如果已存在一个且只有一个的情况下会自动将此类对象赋值给accountDao。如果已存在两个及以上IAccountDao或其子类的对象时spring会寻找名为accountDao的对象,如有则赋值,没有则抛出异常。

故AutoWired只能在只有一个同类型bean类或名称相同时使用。

2:Qualifer。此注解在对方法使用时可单独使用,但是在对类对象注入时必须和AutoWired一并使用spring中基于注解创建bean对象

有一参数为value,注入时会去寻找id为accountDaoImpl2的对象进行赋值。

 

3:Resource。此注解可单独使用,有一参数为name,name指定bean的id进行注入

spring中基于注解创建bean对象

 

三、用于改变bean作用范围的注解

改变bean作用范围的注解为Scope,参数为value,可选属性为1、singleton。2、prototype。

singleton为单例模式,prototype为多例模式。

singleton模式下,bean对象在读取完配置文件后出生,并只有一个,在程序结束(最后一个前台进程结束)后消亡。

prototype模式下,bean对象在获取对象时出生,可以有多个,什么时候消亡则由java垃圾回收机制判断。


四、和生命周期有关的注解

和生命周期有关的注解有两个1、init-method。2、destory-method。

此注解下的方法会分别在出生和消亡时被调用。

 

配置好bean后就可以使用了,首先使用ApplicationContext读取配置,然后就可以获取bean对象使用了。

spring中基于注解创建bean对象