Spring-02注解使用DI

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值