Spring笔记——装配Bean

1、Spring配置的可选方案

  • XML中进行显式配置。
  • Java中进行显式配置。
  • 隐式的bean发现机制和自动装配。 

2、自动化装配bean

  Spring从两个角度来实现自动化装配:

  • 组件扫描(component scanning): Spring会自动发现应用上下文中所创建的bean
  • 自动装配(autowiring): Spring自动满足bean之间的依赖 。

  2.1、创建可被发现的bean——@Component(在POJO实现类上添加@Component注解);

  2.2、启用组件扫描——@ComponentScan

  • 在java配置类上添加@ComponentScan注解启用组件扫描
@Configuration
@ComponentScan
public class DemoConfig {
}
  • 通过XML启用组件扫描
<beans ... >
  <
context:component-scan base-package="" />
</beans>
  • 通过@Autowired注解实现自动装配

  2.3、为组件扫描的bean命名

  • @Component("beanName");
  • @Named("beanName");

  2.4、设置组件扫描的基础包

  • 如果是通过Java配置类进行配置的,默认配置类所在的包为基础包;
  • 通过basePackages配置组件扫描的基础包——@ComponentScan(basePackages={"xxx", "xxxx"});
  • 将其指定为包中包含的类或接口——@ComponentScan(basePackageClasses={xxx.class, xxxx.class});

  2.5、通过为bean添加注解实现自动装配——@Autowired。@Autowired = @inject

  • 在属性上使用@Autowired;
  • 在构造方法上使用@Autowired;
  • 在setter方法上使用@Autowired;
  • 在任何方法上使用@Autowired。

3、通过Java代码装配bean 

@Configuration // 使用@Autowired声明该类为配置类
public class CDPlayerConfig {
  @Bean // 默认情况下bean的ID与带有@Bean注解的方法名相同
  public CompactDisc sgtPeppers() {
    return new SgtPeppers();
  }
  @Bean(name="beanName")
  public CompactDisc sgtPeppers2() {
    return new SgtPeppers();
  }
  @Bean
  public CDPlayer cdPlayer(
CompactDisc compactDisc) {
    return new CDPlayer(compactDisc);
  }
}

4、通过XML装配bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.10.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.10.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.10.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.10.xsd">
    
    <!-- 配置数据源  -->
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!-- 扫描Mybatist配置文件  -->
    <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactory">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:mysql/*.xml"/>
    </bean>
    <!-- Mapper扫描配置   -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zhux.user.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
</beans>

5、导入和混合配置

  5.1、在JavaConfig中引用XML配置;

  5.2、在XML配置中引用JavaConfig。

posted @ 2017-10-11 21:07  西门吹-牛  阅读(175)  评论(0编辑  收藏  举报