Spring之IOC

Posted Panda_Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring之IOC相关的知识,希望对你有一定的参考价值。

1.Spring是什么?

Spring是一个轻量级的控制反转IOC和面向切面编程AOP的框架。
链接: 69道Spring面试题和答案.
https://www.cnblogs.com/whtydn/p/5128097.html

2. Sping组成(七大功能模块作用)

3. IOC理论推导

  1. 写一个业务如何实现?
  2. 用户实际调用的是业务层,dao层他们不需要接触!
  3. 控制反转是一种设计思想,依赖注入是实现IOC的一种方法。
  4. Spring容器在初始化时先读取配置文件,根据配置文件创建的与组织的对象存入容器中,程序使用时再从IOC容器中取出需要的对象。
  5. 控制反转是一种通过描述(XML或者注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是Ioc容器,其实现方法是依赖注入。

4. 写一个业务如何实现?

  1. UserDao接口
  2. UserDaoImpl 实现类
  3. UserService业务接口
  4. UserService业务实现类

5. Spring:IOC本质分析探究(案例分析)

链接: IOC本质分析探究1.
链接: IOC本质分析探究2.

6. Spring官网文档

链接: Spring官网文档.

7. 依赖注入

三种注入方式

  1. 接口注入
  2. Setter注入(重点)
  3. 构造器注入

8. ApplicationContext.xml

<bean  id = " * " class = " *  ">
		<propertry name  = " "  value or ref = " " >
</bean>
//ref :引用Spring容器中创建好的对象。
//value: 基本的数据类型 具体的值

id = 变量名
class = new的对象
propertry 相当于给对象中的属性设置一个值

9.IOC创建对象的方式

链接: 狂神博客–IOC创建对象的方式.

  1. 使用无参构造创建对象,默认!
  2. 假设使用有参构造函数3种—下标索引、参数类型匹配、直接通过参数名

10.Spring配置(bean.xml ApplicationContext. xml)

链接: 狂神博客–Spring配置.

11.依赖注入各种类型-集合类:参考官网

依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性由容器注入
p命名空间注入,可以直接注入属性的值:property
c命名空间注入,通过构造器注入

12.Bean作用域(面试:手写单例模式–弊端–好处)

scope = " singleton"

  1. singleton单例模式
  2. prototype原型模式
  3. request、session、application只能在web中开发使用到。
    request 在一次请求中之后失效
    session 这个对象一直在session活着
    application 全局活着

面试:手写单例模式—弊端–好处

13.Bean的自动装配(3种装配方式)

自动装配是Spring满足bean依赖的一种方式,Spring会在上下文中自动寻找,并自动给bean装配属性
在Spring中有三种装配方式

  1. 在xml中显示的配置
  2. 在java中显示配置
  3. 隐式的自动装配bean–重点: autowire = “byName” or “byType”

14.注解实现自动装配

使用注解须知:

  1. 导入约束: context约束
  2. 配置注解的支持 (重要)
<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/>
</beans>

链接: 官网的注解配置文件.

  1. @Autowire(required = false) 说明这个对象可以为null
  2. @Nullable 字段标记这个注解,说明这个字段可以为null.
  3. 如果@Autowire自动装配的环境比较复杂,自动装配无法通过一个注解(@Autowire)完成的时候,我们可以使用@Qualifier(value = “***”) 指定一个唯一的bean对象注入。
  4. @Resource 通过byName or byType 是java的注解。
  5. @Resource 也可以指定一个唯一的bean对象注入。

15. @Autowire与@Resource的区别

  1. 都是用来自动装配的,都可以放在属性字段上
  2. @Autowire 默认通过byType的方式实现
  3. @Resource 默认通过byname的方式实现,如果找不到,则通过byType实现,如果两个都找不到的情况下,则报错。
  4. 执行顺序不同:@Autowire 默认通过byType的方式实现,@Resource 默认通过byname的方式实现。

以上是关于Spring之IOC的主要内容,如果未能解决你的问题,请参考以下文章

Spring IOC源代码具体解释之容器依赖注入

Spring IOC源代码具体解释之容器初始化

3.1.2 Spring之IoC

Spring系列之IOC容器

Spring入门之IoC

面试之Spring框架IOC和AOP的实现原理