命名空间的加入:使用注解方式完成依赖注入需要加入一个context命名空间
那么我们只需要在原来的java项目的基础上再UserServiceImpl中加入注解即可
注意:在使用注解时需要用:
<context:annotation-config></context:annotation-config>
此时对UserServiceImpl加入注解即可。
分别是 @Resource 该种方法很少使用了,因为其不支持泛型
现常用的时 @AutoWrited 其按照类型来装配,当然也可以只能按照名称来装配
注解方式的配置
<?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"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd" default-lazy-init="true">
<!-- 使用注解方式来完成依赖对象的管理 需要加入一个context命名空间 -->
<!-- 代表启用了注解方式来:如何实现
1.@Resource 默认按照名称装配 Java提供的但现在很少用了,因为其不支持泛型注入
2.Autowrited 默认按类型装配 支持泛型注入
延迟注入,在使用容器对象的时候才实例化对象
-->
<context:annotation-config></context:annotation-config>
<!-- 将Dao交给spring容器统一管理 -->
<bean id="userdao" class="com.demo.dao.UserDaoImpl"></bean>
<bean id="userdao1" class="com.demo.dao.UserDaoImpl">
<constructor-arg index="0" value="彭祥"></constructor-arg>
</bean>
<!-- 配置Service -->
<bean id="userService" class="com.demo.service.UserServiceImpl">
</bean>
</beans>
而AutoWrited指定名称是用@Qualifier(value=“userdao”)
采用这种方式较优化
当然采用这种注解方式依然会让我们的xml配置文件很复杂,因此我们可以采用包扫描的方式来实现装配
注意包扫描只能通过空的构造函数来进行初始化。一旦不提供空的构造函数则会报错。