kuangshen---Spring
- 1.Spring是什么?
- 2. Sping组成(七大功能模块作用)
- 3. IOC理论推导
- 4. 写一个业务如何实现?
- 5. Spring:IOC本质分析探究(案例分析)
- 6. Spring官网文档
- 7. 依赖注入
- 8. ApplicationContext.xml
- 9.IOC创建对象的方式
- 10.Spring配置(bean.xml ApplicationContext. xml)
- 11.依赖注入各种类型-集合类:参考官网
- 12.Bean作用域(面试:手写单例模式--弊端--好处)
- 13.Bean的自动装配(3种装配方式)
- 14.注解实现自动装配
- 15. @Autowire与@Resource的区别
1.Spring是什么?
Spring是一个轻量级的控制反转IOC和面向切面编程AOP的框架。
链接: 69道Spring面试题和答案.
https://www.cnblogs.com/whtydn/p/5128097.html
2. Sping组成(七大功能模块作用)
3. IOC理论推导
- 写一个业务如何实现?
- 用户实际调用的是业务层,dao层他们不需要接触!
- 控制反转是一种设计思想,依赖注入是实现IOC的一种方法。
- Spring容器在初始化时先读取配置文件,根据配置文件创建的与组织的对象存入容器中,程序使用时再从IOC容器中取出需要的对象。
- 控制反转是一种通过描述(XML或者注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是Ioc容器,其实现方法是依赖注入。
4. 写一个业务如何实现?
- UserDao接口
- UserDaoImpl 实现类
- UserService业务接口
- UserService业务实现类
5. Spring:IOC本质分析探究(案例分析)
链接: IOC本质分析探究1.
链接: IOC本质分析探究2.
6. Spring官网文档
链接: Spring官网文档.
7. 依赖注入
三种注入方式
- 接口注入
- Setter注入(重点)
- 构造器注入
8. ApplicationContext.xml
<bean id = " * " class = " * ">
<propertry name = " " value or ref = " " >
</bean>
//ref :引用Spring容器中创建好的对象。
//value: 基本的数据类型 具体的值
id = 变量名
class = new的对象
propertry 相当于给对象中的属性设置一个值
9.IOC创建对象的方式
链接: 狂神博客–IOC创建对象的方式.
- 使用无参构造创建对象,默认!
- 假设使用有参构造函数3种—下标索引、参数类型匹配、直接通过参数名
10.Spring配置(bean.xml ApplicationContext. xml)
链接: 狂神博客–Spring配置.
11.依赖注入各种类型-集合类:参考官网
依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性由容器注入
p命名空间注入,可以直接注入属性的值:property
c命名空间注入,通过构造器注入
12.Bean作用域(面试:手写单例模式–弊端–好处)
scope = " singleton"
- singleton单例模式
- prototype原型模式
- request、session、application只能在web中开发使用到。
request 在一次请求中之后失效
session 这个对象一直在session活着
application 全局活着
面试:手写单例模式—弊端–好处
13.Bean的自动装配(3种装配方式)
自动装配是Spring满足bean依赖的一种方式,Spring会在上下文中自动寻找,并自动给bean装配属性
在Spring中有三种装配方式
- 在xml中显示的配置
- 在java中显示配置
- 隐式的自动装配bean–重点: autowire = “byName” or “byType”
14.注解实现自动装配
使用注解须知:
- 导入约束: context约束
- 配置注解的支持 (重要)
<?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>
链接: 官网的注解配置文件.
- @Autowire(required = false) 说明这个对象可以为null
- @Nullable 字段标记这个注解,说明这个字段可以为null.
- 如果@Autowire自动装配的环境比较复杂,自动装配无法通过一个注解(@Autowire)完成的时候,我们可以使用@Qualifier(value = “***”) 指定一个唯一的bean对象注入。
- @Resource 通过byName or byType 是java的注解。
- @Resource 也可以指定一个唯一的bean对象注入。
15. @Autowire与@Resource的区别
- 都是用来自动装配的,都可以放在属性字段上
- @Autowire 默认通过byType的方式实现
- @Resource 默认通过byname的方式实现,如果找不到,则通过byType实现,如果两个都找不到的情况下,则报错。
- 执行顺序不同:@Autowire 默认通过byType的方式实现,@Resource 默认通过byname的方式实现。