使用注解将组件添加到ioc容器
Spring中的四个注解:
@Controller:控制器:推荐给控制层组件添加(Servlet),负责接受请求,转发请求
@Service:业务逻辑,推荐给业务逻辑层添加,负责处理业务关系
@Repository:仓库 推荐给数据库层(持久层,dao层)组件添加
@Component:组件,推荐不属于上面三层的组件添加
注意:各个注解原则上没有太大的区别,但是按规定名字添加注解,提高代码的可读性,所以使用注解时尽量规范
使用注解添加组件到ioc容器的步骤:
1.给组件添加上对应注解
2.告诉ioc容器扫描对应包
注意:
1.使用注解添加组件,要导入aop包
2.使用注解跟直接配置的默认效果一样,没有指定id,默认id为首字小写类名,如:BookDao类,容器中默认id为bookDao
3.也可以通过注解改变默认属性,如:添加@Scope(“prototype”),让组件变成多例
4.<context:component-scan base-package=""></context:component-scan>的使用:
指定扫描对应的包,内部可以写<context:exclude-filter type=“annotation” expression=""/>
<context:include-filter type=“annotation” expression=""/>排除或指定扫描一些具体的类
使用include时,要指定<context:compinent-scan>中use-default-filters=“false”;默认为true,即扫描包下所有
自动装配注解@Autowired
步骤:
按照类型在ioc容器中寻找,找到一个就赋值,没找到就报错。若是找到多个,就按属性名,继续找。
使用@Qualifier(“bookService”),可以指定要装备的id名字,不用使用默认的属性名
使用@Autowired(required=false),当没有找到对应类装载时,赋值null,而不会报错,默认情况required等于ture,即没找到报错
@Autowired和@Resource的区别
都可以实现自动装载,但是@Resource是java的注解,扩展性强,功能相对较弱。@Autowired是Spring的注解,功能强大,但是只能在Spring框架中使用