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的区别
- 16. @Component与@Bean的区别
- 17.将一个类声明为 Spring 的 bean 的注解有哪些?
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的方式实现。
16. @Component与@Bean的区别
- 作用对象不一样:@Component注解作用于类。@Bean 注解作用于方法
- @Component 通常是通过路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean 告诉了 Spring 这是某个类的实例,当我们需要用它的时候还给我。
- @Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。
17.将一个类声明为 Spring 的 bean 的注解有哪些?
- @Component :通用的注解,可标注任意类为 Spring 的组件。如果一个 Bean 不知道属于哪个层,可以使用 @Component 注解标注。
- @Repository :对应持久层即 Dao 层,主要用于数据库相关操作。
- @Service :对应服务层,主要设计一些复杂的逻辑,需要用到 Dao 层。
- @Controller :对应 Spring MVC 控制层,主要用来接受用户请求并调用 Service 层返回数据给前端页面。
- @Configuration :声明该类为一个配置类,可以在此类中声明一个或多个 @Bean 方法。