注解可以理解为对代码的标记,就像家里面做饭用的调料瓶,上面总会有标签写着油、盐、酱、醋等。注解对代码而言就是这样的标记。不仅是给编译器使用,有时候也会提醒开发人员。
基于注解管理bean,顾名思义是要通过注解来向IOC容器中添加bean。在对应的类上面添加相应的注解即可在IOC容器中添加对应的bean,有四种注解可以达到这种效果:
//以下四种注解的作用是一样的,之所以不同是为了方便开发人员区别不同的类
@Component
@Controller //多用于Controller类
@Service //多用于Service类
@Repository //多用于Dao类
在对应的类上添加注解之后,经过扫描IOC容器才能知道那个类应该添加到容器中产生对应的bean。所以应当配置扫描标签:
<context:component-scan base-package="com.lu.Spring">context:component-scan>
扫描标签通过配置要扫描的包来进行扫描,若是包中有的不想要进行扫描可以通过子标签进行排除:
<context:component-scan base-package="com.lu.Spring">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="assignable" expression="com.lu.Spring.dao.UserDao"/>
context:component-scan>
annotation
通过注解的相对路径来屏蔽扫描。
assignable
通过类名来屏蔽扫描。
利用xml管理bean时,我们可以手动设置bean的id;利用注解配置bean我们即有默认id、又可以手动设置。
1、默认id
利用注解设置bean时,如果没有手动设置bean的id,那么就会使用默认id,默认id是类名的首字母小写。
2、通过注解的value值来设置id
相比于xml的自动装配,基于注解的自动装配相对简单,只需要在对应位置加上@Autowired注解即可。@Autowired注解可以加在三个地方:
上面我们提到,自动装配有两种方式,ByType和ByName。@Autowired注解默认是ByType方式,当ByType找不到对应的bean时自动转换成ByName(默认通过属性名的首字母小写来查找)。
若以上两种情况都找不到bean可以通过@Qualifier(“”)注解来指定id来查找对应的bean。