Spring基础之三:annotation配置注入


    用annotation配置只在源代码相应的地方加入annotation即可,xml就不用再来回来去改了,开发时候快,不过我觉得没xml清楚。

一:修改配置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/>
   <context:component-scan base-package="com.rt.springdemo"></context:component-scan>

</beans>
其中这两句是新加且必须的,新加了一个命名空间:xml的namespace
xmlns:context="http://www.springframework.org/schema/context"

<context:annotation-config/>
其实annotation全写对了的话,配置文件就是最上边那样了(package要改),不用再加别的东西了。




二: @Autowired

在server层的setter上,加上@Autowired,相当于省略了property name=“XXX”

	@Autowired
	public void setUserDAO(IUserDAO userDAO) {//xml中调用的方法
		this.userDAO = userDAO;
	}

但被注入文件的初始化等还得手动来,也就是说,@Autowired省略了下边注释里的东西

  <bean id="u1" class="com.rt.springdemo.dao.impl.UserDAOImpl" />
  <bean name="userService01" class="com.rt.springdemo.service.UserService">	 
  	<!--1.property这句就相当于设置了属性,也就是调用 set【UserDao】(【u1】) -->
  	<!--在server层的setter上,加上@Autowired,相当于省略了property name=“XXX”  -->
        <!--<property name="userDAO" ref="u1" />-->
 </bean>




三:@Qualifier

@Qualifier(value=" ObjNoX  ")可以解决,多个相同类型文件注入时匹配的问题:

如果xml中,存在两个相同类型的实例: u1 和u2, @Autowired后程序不知道你到底要注入哪一个

  <bean id="u1" class="com.rt.springdemo.dao.impl.UserDAOImpl" />
  <bean id="u2" class="com.rt.springdemo.dao.impl.UserDAOImpl" />
  <bean name="userService01" class="com.rt.springdemo.service.UserService">	 
这样就会有错,这时候就要用@Qualifier指定一下
	@Autowired
	public void setUserDAO(@Qualifier(value="u1") IUserDAO userDAO) {//xml中调用的方法
		this.userDAO = userDAO;
	}
@Qualifier(value="u1"就说的很清楚了,我要注入u1




四:@Resource

@Resource(name=" ObjNoX "),一样可以解决上边第三点说到的问题

  <bean id="u1" class="com.rt.springdemo.dao.impl.UserDAOImpl" />
  <bean id="u2" class="com.rt.springdemo.dao.impl.UserDAOImpl" /> 
  <bean name="userService01" class="com.rt.springdemo.service.UserService">	 
service层这么写:

	@Resource(name="u1")
	public void setUserDAO(IUserDAO userDAO) {//xml中调用的方法
		this.userDAO = userDAO;
	}




五:@Component

xml配置文件里还剩<bean>标签还比较啰嗦。

可用在相应的类的上边,声明@Component(value=" userService01 "),代替对bean的规定


如:

@Component(value="u1")
public class UserDAOImpl implements IUserDAO {
}
就相当于代替了

<bean id="u1" class="com.rt.springdemo.dao.impl.UserDAOImpl" />


再如:

@Component(value="userService01")
public class UserService {
	}
就相当于代替了

<bean name="userService01" class="com.rt.springdemo.service.UserService">
     ...
</bean>











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值