Spring中可以通过xml文件进行ioc容器内bean的管理,通过注册相应的java bean类实现相应的依赖注入。
除此之外它还支持另外一种更加方便快捷的方式-------使用注解。达到依赖注入的目的,与依赖注入相关的常用注解如下:
@Repository //数据库类
@Component //组件类
@Service //服务类
@Controller //控制器类
@AutoWired //自动注入
@Qualifier //指定注入的bean的id
在使用注解之前要先导入context命名空间,如果使用IDEA在使用context命名空间时会自动导入,导入命名空间之后,使用包扫描语句:
<context:component-scan base-package="包名"></context:component-scan>
告诉Spring 要去哪些包中寻找添加了注解需要执行相应操作的类
包名写的应尽量详细(例如只写个:com.*,同样也能扫描到相应的类,达到预定目的,但是可能com开头的包很多,如果写的太粗略会增加扫描时长)
注解含义
前面四个注解,用于标记相应功能的类,@Repository @Component @Service @Controller
Repository:对应我们常说的Dao(Data Access Object)层,用于添加在相应dao层类上
Service:用于和经常Dao层对接的服务类
Controller:这个注解应该添加在控制器类上(其实就是Servlet类)
Component:如果要添加注解的类不属于上面说的,或者你分不清它应该添加什么注解,那么就可以使用这个注解,将被注解的类归为组件类
另外,标注什么注解在处理时并不会区别对待,之所以会有这么多类别的注解,是为了方便他人读懂代码
Autowired :它的作用是,将对应的bean注入到java类中的属性当中
常用的用法是加在类的属性当中,此外它还可以加在方法,方法的参数,构造器上
-
加在属性上时:会自动在IOC容器中为属性注入值,如果没有特别指定,将使用注入bean的类名的首字母小写形式
-
加在方法上:spring扫描时会自动调用该方法,并使用ioc容器中注册的bean当成参数传入
-
加在构造器上:创建这个类时,会调用此构造器,并且使用ioc容器中的bean 作为参数
-
加在方法参数上:调用这个方法时会使用IOC容器中相应的bean 注入(和@Qualifier一起使用,取消@AutoWired 的默认注入行为)
Qualifier:这个注解的作用是取消Auto的默认行为,通过参数影响AutoWired行为,比如当使用字符串作为参数时,会使用字符串内容作为id注入相应的bean