Spring之IOC (含Spring注解)

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的方式实现。

16. @Component与@Bean的区别

  1. 作用对象不一样:@Component注解作用于类。@Bean 注解作用于方法
  2. @Component 通常是通过路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean 告诉了 Spring 这是某个类的实例,当我们需要用它的时候还给我。
  3. @Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。

17.将一个类声明为 Spring 的 bean 的注解有哪些?

  1. @Component :通用的注解,可标注任意类为 Spring 的组件。如果一个 Bean 不知道属于哪个层,可以使用 @Component 注解标注。
  2. @Repository :对应持久层即 Dao 层,主要用于数据库相关操作。
  3. @Service :对应服务层,主要设计一些复杂的逻辑,需要用到 Dao 层。
  4. @Controller :对应 Spring MVC 控制层,主要用来接受用户请求并调用 Service 层返回数据给前端页面。
  5. @Configuration :声明该类为一个配置类,可以在此类中声明一个或多个 @Bean 方法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值