IOC&DI

Spring学习路径

  • Spring的IOC
  • Spring的DI
  • Spring的AOP
  • AOP的具体应用,事务管理
  • IOC/DI的具体应用,整合Mybatis

Spring的IOC

  • bean基础配置: id, class,name, scope
  • bean实例化:构造方法实例化,静态工厂实例化,实例工厂和FactoryBean
  • bean的生命周期:init-method, destory-method,close,registerShutdownHook,InitializingBean,DisposableBean

Spring的DI

  • setter注入
    注入引用数据类型
    注入简单数据类型
<property name="userDao" ref="userDao"/>
<property name="connectionNum" value="10"/>
  • 构造器注入
    注入引用数据类型
    注入简单数据类型
<constructor-arg name="userDao" ref="userDao"/>
<constructor-arg name="connectionNum" value="666"/>
  • 自动配置
  1. 自动装配用于引用类型依赖注入,不能对简单类型进行操作
  2. byType
  3. byName
  4. 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autowire="byName"/>
  • 集合注入
  1. 属性
  2. setter方法
  3. 配置
<property name="array">
    <array>
        <value>100</value>
        <value>200</value>
        <value>300</value>
    </array>
</property>

IOC/DI配置管理第三方bean

案例:数据源对象管理
  1. 导入druid的依赖
  2. 配置第三方bean
  3. 从IOC容器中获取对应的bean对象
  4. 运行程序
<!--管理DruidDataSource对象-->
    <bean class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
加载properties文件

步骤1:准备properties配置文件
步骤2:开启context命名空间
步骤3:加载properties配置文件
步骤4:完成属性注入

//步骤1:准备properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

//步骤2:开启`context`命名空间
 xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
            
//步骤3:加载properties配置文件
<context:property-placeholder location="jdbc.properties"/>

//步骤4:完成属性注入
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

核心容器

容器的创建方式 2种
bean的获取方式 3种
容器的层次结构
BeanFactory的使用

        Resource resources = new ClassPathResource("applicationContext.xml");
        BeanFactory bf = new XmlBeanFactory(resources);
        BookDao bookDao = bf.getBean(BookDao.class);

BeanFactoryApplicationContext`之间的区别

  • BeanFactory是延迟加载,只有在获取bean对象的时候才会去创建
  • ApplicationContext是立即加载,容器加载的时候就会创建bean对象
  • ApplicationContext要想成为延迟加载,只需要按照如下方式进行配置
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"  lazy-init="true"/>

IOC/DI注解开发

纯注解开发
  • 记住@Component、@Controller、@Service、@Repository这四个注解

  • applicationContext.xml中<context:component-san/>的作用是指定扫描包路径,注解为@ComponentScan

  • @Configuration标识该类为配置类,使用类替换applicationContext.xml文件

  • ClassPathXmlApplicationContext是加载XML配置文件

  • AnnotationConfigApplicationContext是加载配置类

作用范围与生命周期

@scope 默认值singleton(单例),可选值prototype(非单例)
@PostConstruct //在构造方法之后执行,替换 init-method
@PreDestroy //在销毁方法之前执行,替换 destroy-method

注解开发依赖注入
  • 注解实现按照类型注入
  • 注解实现按照名称注入
  • 简单数据类型注入
  • 注解读取properties配置文件
    1. 步骤1:resource下准备properties文件
    2. 步骤2: 在配置类上添加@PropertySource注解
    3. 使用@Value读取配置文件中的内容

@Autowired
@Qualifier
@Value
@PropertySource

IOC/DI注解开发管理第三方bean

引入外部配置
@ComponentScan
@import
@Bean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值