spring 11 bean配置-基于注解配置bean

来源:互联网 发布:钢琴演奏家 软件 编辑:程序博客网 时间:2024/06/05 21:54

1 使用注解来配置bean

2 基于注解来装配bean的属性

组件扫描:spring能从classpath下自动扫描,侦测和实例化具有特定注解的组件。

特定组件包括

@component:基本注解,标识了一个受spring管理的组件

@respository:标识持久层组件

@service:标识服务层(业务层)组件

@controll:标识表现层组件 UserServiceImp userService

目前这几个注解是可以混用的,spring目前无法识别各组件区别

对于扫描到的组件,spring有默认的命名策略:使用非限定类名,第一个字母小写。也可以在注解中通过value属性标识组件的名称。

当在组件类上使用了特定的注解之后,还需要在spring的配置文件中声明<context:component-scan>:

-base-package属性指定一个需要扫描的基类包,spring容器将会扫描这个基类包及其子包中的所有类。

resource-pattern可以指定只扫描某子包


<!--context:exclude-filter子节点排除哪些指定表达式的组件  -->
    <!--context:include-filter子节点包含哪些指定表达式的组件
        assignable:只包含
        该子节点需要use-default-filters配合使用,use-default-filters="false"
     -->


组件装配:<context:component-scan>元素还会自动注册AuotowiredAnnotationBeanPostProcessor实例,该实例可以自动装配具有

@Autowired和@Resource、@Inject注解的属性。可以放到构造器上边、普通字段上边,一切具有参数的方法都可以应用

@Autowired:默认情况下,所有使用@Autowired注解的属性都需要被设置,当Spring找不到匹配的bean装配属性时,会抛出异常。

                          若某一属性不允许被设置,可以设置@Autowired注解的required属性为false

                          有多个对应bean时,可以在@Qualifier注解提供名字。spring允许对方法的入参标注@Qualifier指定注入bean名称

                          @Autowired装配数组,会把所有匹配的bean自动装配

                          @Autowired装配集合,spring会读取该集合的类型信息,然后装配与之兼容的bean

                          @Autowired装配Map,若该map的键值为string,那么string将自动装配与它兼容的bean。bean本身作为键,bean的名称作为键值。

@Resource、@Inject功能与@Autowired类似,且没有@Autowired强大,所以用@Autowired就可以了


0 0