Spring(三)【注解注入】
使用注解实现DI依赖注入:
准备工作:
1)需要spring-aop.jar
2)spring的配置文件加入spring-context.xsd的约束文件
步骤:
1)新建Maven
2)加入spring依赖,必须又spring-aop.jar
3)新建类,在类中加入注解

注意:@Component()括号中的value可以省略,也可以不指定名称,框架会给对象默认名称,即首字母小写的类名
4)新建spring配置文件,声明组件扫描器标签,指定注解所在的包名

和@Component功能相同的其他注解
1)@Repository:放在Dao层的实现类上面,创建Dao对象,这样的对象可以访问数据库
2)@Service:放在Service层的实现类上面,创建Service对象,表示业务层对象,能够有事务功能
3)@Controller:放在处理器类的上面,创建处理器对象,处理器对象能够接受用户的请求
以上三种注解,除创建对象外,还有其他功能,因此Component更像是父类,其他三种注解像是子类
指定扫描多个包:
1)多次使用扫描器,分别制定不同的包
<context:component-scan base-package="entity.student"/>
<context:component-scan base-package="entity.school"/>
2)使用分隔符,指定多个包
<context:component-scan base-package="entity.student;entity.school"/>
3)指定父包
<context:component-scan base-package="entity"/>
@value:简单类型的属性赋值
1)可以在属性定义上,这种方式则无需set方法(常用)

2)在set方法上

@Autowired:引用类型的自动注入,支持byName,byType,默认是byType
属性:required,boolean类型,默认值是true
true:引用类型必须赋值成功,如果失败,程序报错并终止运行
false:引用类型赋值失败,程序正常执行,引用类型的值是null
1)属性定义的上面,无需set方法(常用)

注意:加上下方的@Qualifire(value="")后即可转变为byName,value可省略
2)在set方法上面
@Resource:来自JDK,可以给引用类型赋值,spring框架支持这个注解的使用,默认是byName自动注入,如果失败再使用byType,如果要只使用byName方式,则在@Resource(name="")添加具体的名称
1)在属性定义的上面,无需set方法(常用)

2)在set方法的上面
注意:如果在使用@Resource注解时发现无法使用,需要在pom.xml配置文件中添加依赖
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>

浙公网安备 33010602011771号