Spring--配置Bean

配置形式

xml配置

    <!--通过全类名的方式来配置bean-->
    <bean id="" class=""/>

id:Bean 的名称。

  • 在 IOC 容器中必须是唯一的
  • 若 id 没有指定,Spring 自动将权限定性类名作为 Bean 的名字
  • id 可以指定多个名字,名字之间可用逗号、分号、或空格分隔

注解配置

@Bean

Spring容器

  • BeanFactory: IOC容器的基本实现
  • ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口,初始化获得bean实例

依赖注入

属性注入

    <bean id="" class="">
    <property name="" value=""/>
    </bean>
    使用p命名空间
    <bean id="" class=""
     p:username="" p:age=""/>

构造器注入

按索引匹配入参

    <bean id="" class="">
    <constructor-arg value="" index=""/>
    </bean>

按类型匹配入参

    <bean id="" class="">
    <constructor-arg value="" type""/>
    </bean>

引用bean

    <bean id="" class="">
    <property name="" ref=""/>
    </bean>

内部bean

    <bean id="" class="">
    <property name="">
        <bean class="">
        <property name="" value=""/>
        </bean>
    </property>
    </bean>

继承bean

    <bean id="" parent=""/>
  • 父 Bean 可以作为配置模板, 也可以作为 Bean 实例. 若只想把父 Bean 作为模板, 可以设置 的abstract 属性为 true, 这样 Spring 将不会实例化这个 Bean

依赖bean

    <bean id="" class="" depends-on="id">
  • Spring 允许用户通过 depends-on 属性设定 Bean 前置依赖的Bean,前置依赖的 Bean 会在本 Bean 实例化之前创建好
  • 如果前置依赖于多个 Bean,则可以通过逗号,空格或的方式配置 Bean 的名称

bean作用域

    <bean scope="">
  • singleton 默认单实例,在容器中仅存一个bean实例
  • prototype 每次调用getBean(),创建新实例
  • request 每次http请求创建一个新的bean,适用于WebApplicationContext环境
  • session 同一个session共享一个bean,适用于WebApplicationContext环境

使用外部属性文件

    <context:property-placeholder
        location="classpath:db.properties "/>
  • ${jdbc.username}加载属性

组件扫描

    <context:component-scan
    base-package="">
  • @Component: 基本注解, 标识了一个受 Spring 管理的组件
  • @Respository: 标识持久层组件
  • @Service: 标识服务层(业务层)组件
  • @Controller: 标识表现层组件
  • 对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称
  • @Autowired 注解自动装配具有兼容类型的单个 Bean属性
    • 构造器, 普通字段(即使是非 public), 一切具有参数的方法都可以应用@Authwired 注解
    • 默认情况下, 所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false
    • 默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称
    • @Authwired 注解也可以应用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.
    • @Authwired 注解也可以应用在集合属性上, 此时 Spring 读取该集合的类型信息, 然后自动装配所有与之兼容的 Bean.
    • @Authwired 注解用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 Bean 的名称作为键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值