1(1)导入 AOP 的 Jar 包。因为注解的后台实现用到了 AOP 编程。
( 2 )需要更换配置文件头,即添加相应的约束。
约 束 在 %SPRING_HOME%\docs\spring-framework-reference\html\xsd-configuration.html
文件中。
( 3 )需要在 Spring 配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。
声明组件扫描器:指定注解所在的包名, 让框架找到注解的位置
base-package:注解所在的包名,框架会扫描这个包和子包中的类,
按照类中的注解创建对象,给属性赋值。
指定多个包
第一种方式:使用多次component-scan
<context:component-scan base-package=“com.bjpowernode.ba01” />
<context:component-scan base-package=“com.bjpowernode.ba02” />
第二种方式,使用分隔符( ;或者,)指定多个包
<context:component-scan base-package=“com.bjpowernode.ba01;com.bjpowernode.ba02” />
第三种方式,指定父包
<context:component-scan base-package=“com.bjpowernode” />
注解使用 1:
/**
* @Component:创建java类的对象,等同于<bean>,默认是单例对象
* 属性:value ,表示对象的名称, 等同于 <bean>的id属性
* 位置:在类定义的上面
* @Component(value="myStudent")等价于
* <bean id="myStudent" class="com.bjpowernode.ba01.Student"/>
*
* 和@Component功能相同的其他注解,这些注解还有其他的含义。
* 1.@Repository:放在Dao层的实现类上面,表示创建Dao对象,完成数据库操作的。
* 2.@Service:放在业务层的实现类上面,表示创建Service对象,处理业务逻辑的。
* 3.@Controller:放在处理器类的上面,创建处理器对象,这种对象可以接受请求,响应处理结果的。
*
* @Repository, @Service,@Controller相当于是继承@Component .
* @Repository, @Service,@Controller是用来给对象分层的:
* 持久层 业务层 控制层
*
*/
//使用value指定对象的名称
//@Component(value="myStudent")
//省略value属性
@Component("myStudent")
//不指定对象的名称,由框架提供默认名称:类名的首字母小写的值
//@Component
public class Student {
/**
* 简单类型的属性赋值:
* @Value:简单类型的属性赋值
* 属性:value,简单类型的属性值
* 位置:
* 1.在属性定义的上面,推荐使用,无需set方法
* 2.在set方法的上面
*/
@Value(value="张三")
private String name;
/**
* 引用类型 byType类型
* @Autowired: 是spring框架提供的,给引用类型赋值, 使用自动注入的原理。
* 支持byName, byType
* 位置:
* 1.在属性定义的上面,无需set方法,推荐使用
* 2.在set方法的上面
* @Autowired默认是byType原则
*/
//byType
@Autowired
private School school;
/**
* 引用类型 byName 类型
* @Autowired: 是spring框架提供的,给引用类型赋值, 使用自动注入的原理。
* 支持byName, byType
* 属性:required 是boolean类型的,默认是true
* true:表示引用类型必须赋值成功,否则程序报错,并终止执行。
* false: 引用类型赋值失败,程序不报错,引用类型是null
* 位置:
* 1.在属性定义的上面,无需set方法,推荐使用
* 2.在set方法的上面
* @Autowired使用byName需要使用两个注解
* 1.@Autowired给引用类型赋值
* 2.@Qualifier:指定对象的名称
* 属性: value 对象的名称(bean的id)
*/
//byName
@Autowired(required=false)
@Qualifier("mySchool")
private School school;
/**
* 引用类型
* @Resource: 是jdk提供的注解,给引用类型赋值, 使用自动注入的原理。 spring框架提供了对\
* @Resource功能的支持
* 可以在spring项目中,使用@Resource
* 位置:
* 1.在属性定义的上面,推荐使用,无需set方法
* 2.在set方法的上面
*
*/
//默认是byName, 赋值先使用byName,如果byName失败再使用byType, 所以当前例子
用的是byType赋值成功
@Resource
private School school;
}
//只用byName , 需要给@Resource增加一个属性 name , 指定对象的名称
@Resource(name="mySchool")
private School school;