使用注解实现IOC
准备一个实体类和一个DAO接口
实体类
DAO接口
编写DAO实现类
代码中通过注解定义了一个名为userDao的bean。@Component("userDao")等价于
除了@Component,Spring还提供了3个特殊的注解
@Repository 用于标注DAO
@Service 用于标注业务类
@Controller 用户标注控制器类
另外使用@Autowired注解实现bean的装配
准备一个业务接口
编写实现类
我们装配一个UserDao,修改UserServiceImpl代码
通过@Service标注了一个业务Bean,并使用@Autowired为dao属性注入所依赖的对象,spring将直接为dao属性赋值.
如果有一个以上类型相匹配的Bean时,则可以使用@Qualifier指定所需要的Bean,例如
使用注解定义完Bean组件,接下来就可以使用注解的配置信息启动Spring容器
现在Spring配置文件中添加对Context命名空间的声明
然后使用context命名空间下的component-scan标签扫描注解标注的类,base-package属性指定了需要扫描的基准包(多个包可用逗号隔开),Spring会扫描这些包中的所有类,获取Bean的定义信息。
编写测试类
运行结果
除了@Autowired以外,Spring还提供了@Resource注解实现组件装配,该注解也能对类的成员变量提供注入功能
@Resource有一个name属性,默认情况下Spring将这个属性的值解释为要注入的Bean的名称,根据字段名或者setter方法产生默认的名称