Spring3:Annotation之Resource和Component

在annotation还有一种完全注解方法,不用在spring xml里面配置bean 直接在具体类上进行注解bean的名称

这样就不用在xml里面进行每个需要注入的类都添加一个<bean/>,但是首先要说下@Resource这个注解,然后再说不配<bean/>的方法

 

@Resource顾名思义——资源,同样跟@AutoWired作用一样,在setter方法体上进行注解注入

-----

@Resource  //这种默认按照autowire="byType" 来进行检索注入

@Resource(name="u")  // 这种当然就是按照autowire="byName" 来注解

案例代码如下:

 

需要被注入的UserService:

 

package com.springdemo.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.springdemo.dao.IUserDao;
import com.springdemo.service.IUserService;

@Component("userService")
public class UserService implements IUserService {

	protected IUserDao dao;

	public IUserDao getDao() {
		return dao;
	}

	@Resource(name="userDaoImpl")
	public void setDao(IUserDao dao) {
		this.dao = dao;
	}

	@Override
	public void add() {
		// TODO Auto-generated method stub
		dao.add();
	}

	@Override
	public void del() {
		// TODO Auto-generated method stub
		dao.del();
	}

	@Override
	public void update() {
		// TODO Auto-generated method stub
		dao.update();
	}
	
	

}

 在setter器中可以看到注解@Resource(name="userDaoImpl")

 

再就是注入的UserDaoImpl:

 

package com.springdemo.dao.impl;

import org.springframework.stereotype.Component;

import com.springdemo.dao.IUserDao;


@Component("userDaoImpl")
public class UserDaoImpl implements IUserDao {

	private String id;
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	@Override
	public void add() {
		// TODO Auto-generated method stub
		System.out.println("UserDaoImpl.add()");
		System.out.println("id=" + id);
	}

	@Override
	public void del() {
		// TODO Auto-generated method stub
		System.out.println("UserDaoImpl.del()");
		System.out.println("id=" + id);
	}

	@Override
	public void update() {
		// TODO Auto-generated method stub
		System.out.println("UserDaoImpl.update()");
		System.out.println("id=" + id);
	}

}

 

 

然后再就是xml了,你会发现配置的内容只剩下这两句话了。

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
<context:annotation-config />
<!-- 不用配bean xml的时候需要指定被@Component注解过的Class所在的包,这里提供检索 -->
<context:component-scan base-package="com.springdemo" />
	
	

</beans>

 

这个时候就能很清楚的明白@Component的作用了,相信我再不用说如何配置不配置bean的方法。

@Component就是注解一个Class 成一个Bean,xml没有配置bean全部靠它,其中@Component有缺省规则,如下

 

@Component  //这个把当前Class的命名为首字母小写的bean

@Component("userDaoImpl")  当然这个就是直接制定表示的bean的name值

使用此注解最好是制定bean的值,保证准确性。

 

 

注解是一个比较方便的一种途径,在开发过程中使用率非常高,注入通常很少修改,甚至出现没有源代码只能通过xml修改方式修改注入的情况几乎不多见,所以能用注解就注解。

 

补充一点需要添加common-annotation.jar包

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值