基于注解管理bean
功能分析:
注解:
和XML配置文件一样,注解本身并不能执行,注解本身仅仅是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作;其本质:所有一切的操作都是java代码来完成,XML和注解只是告诉框架中的java代码如何执行
扫描:
Spring为了知道开发人员在那些地方标记了什么注解,需要通过扫描的方式,来进行检测;然后再根据注解进行后续操作
注解和扫描:
标识组件的常用注解:
@Component:将类标识为普通组件
@Controller:将类标识为控制层组件
@Service:将类标识为业务层组件
@Repository:将类标识为持久层组件
四个注解的区别:
@Controller、@Service、@Repository这三个注解只是在@Component注解的基础上起来三个新的名字,对于Spring使用IOC容器管理这些组件而言没有区别,@Controller、@Service、@Repository这三个组件只是给开发人员看的,让其能够分辨组件的作用。
注意:虽然他们本质一样,但是为了代码的可读性,为了程序结构更严谨开发人员不能够随意胡乱标记。
新创建一个Maven
结果如下所示:
将所需要的依赖添加到pom.xml的配置文件中
创建控制的类
创建Dao的类和接口,实体类去实现接口
创建Dao的类和接口,实体类去实现接口
创建配置文件
结果如下所示:
创建测试类
给三个类中(控制层、业务层、持久层)分别添加注解
在spring-ioc-annotation的配置文件中添加扫描组件
置文件中添加扫描组件
在测试类中添加测试方法
测试结果如下:
扫描组件:
在上一次的spring-ioc-annotation的配置文件中修改
排除:
第一种:根据注解进行排除:
测试结果如下(并未找到UserController的组件):
第二种:根据类型进行排除 :
测试结果如下:
包含:
在context标签中添加use-default-filters=false
在其中添加只扫描的对象
测试结果如下所示:
bean的id:
默认bean的id
自定义bean的id如(在注解后面添加括号并自定义id):
测试方法:
测试结果: