基于注解DI完成对象配置
使用注解的步骤:
1、加入maven依赖:spring-context,会简介加入spring-aop依赖,有他才能使用注解;
2、在类中加入spring的注解
3、在spring的配置文件中,级啊引入一个组件扫描的标签,说明注解在项目中的位置。
常用相关注解:
@Component
@Respotory
@Service
@Controller
@Value
@Autowired
@Resource
实现步骤:
- 加入依赖
- 创建类,在类中加入注解
- 创建spring的配置文件,声明组件扫描器标签,说明注解在项目中的位置
4.使用注解创建对象,创建容器ApplicationContext
指定多个包的三种方式:
1、指定多次组件扫描器,指定不同的包
<context:component-scan base-package=”com.AAAA.01”>
<context:component-scan base-package=”com.AAAA.02”>
2、使用分隔符(;或,),分隔多个包名
<context:component-scan base-package=”com.AAAA.01;com.AAAA.02”>
3、指定父包
<context:component-scan base-package=”com.AAAA”>
@Component
等同于bean创建对象。
属性:value 为对象的名称,也就是bean的id,value的值唯一;
等同于:<bean id =”myStudent” class=”xxxx”/>
注意:
1、创建的对象在整个spring容器中只能有一个。
2、在Spring中,创建的对象被存储在一个Map对象中
和Component功能一致的注解还有:
@Repository(用在持久层上):放在dao的实现类上,表示dao对象,说明其能访问数据库
@Service(用在业务服务上):放在service的实现类上,创建service队形,service对象是做业务处理,可以有事务等功能
@Controller(用在控制器上):放在控制器(处理器)类上面,创建控制器对象,通过控制器对象,能够接收用户提交的参数,显示请求的处理结果。
注意:
1、通过上面三个注解可实现项目中对对象的分层。
2、通过@Component只声明对象,不做业务层次的划分。
@Vaulue
简单类型的属性赋值
属性:Value是String类型,标识简单类型的属性值。
注意:
1、使用位置在属性定义的上面,无序在用set方法
@Autowired
用作复杂类型的属性赋值
spring中通过注解给引用类型赋值,使用的是自动注入原理,支持byName,byType;
@Autowired默认使用的是byType自动注入。
注意:在属性定义的上面,无需set方法
使用byName方式进行赋值:
- 在属性上面使用@Autowired
- 在属性上加入@Qualifier(value=”bean的id”):标识使用指定名称的bean完成赋值
属性:
- required的属性,是一个boolean类型的,默认true
required=true:标识引用类型赋值失败,程序报错,并终止执行
required=false:引用类型如果赋值失败,程序正常执行,引用类型是null
@Resource
是JDK的注解,不是spring提供的。spring提供了对该注解的支持。可以用来给引用类型赋值。支持byType,byName赋值,默认byName。
注意:在属性定义上面,无需set方法。
注意:在注解过程中,先使用byName自动注入,如果byName属性失败,在使用byType
若只想使用byName方式,则需要给一个name属性