4-1 Spring框架基础知识
Spring框架基础知识
1.Spring 框架作用
- 主要解决了
创建对象
和管理对象
的问题. 自动装配机制
2.Spring 框架
- (Spring容器,JavaBean容器,Bean容器,Spring容器,IOC容器)
- 容器: 只要有需要都可以找它去拿,叫容器
3.依赖关系:
- 类与类之间的是有依赖关系的(例如:在类B里边调用类A的方法) ;
4.异常NPE
- Null Point Exeception)
5.Spring框架依赖项
- spring-context (pom.xml加载依赖项)
6.Spring Bean :
被Spring管理的对象
创建对象的方式有两种:
通过@Bean方法
@Configuration
public class SpringBeanFactory {
@Bean
public Random random() {
return new Random();
}
}
通过组件扫描:只适用于自定义的类
@Configuration
@ComponentScan("cn.tedu.spring")
public class SpringConfig {
}
@Component/@Controller/@Service/@Repository
public class UserMapper {
}
7.相关注解:
注解 | 解释 |
---|---|
@Configuration | 添加在类的声明之前,表示此类是配置类,会自动执行配置类中的@Bean方法,并解读配置类上的其它注解 |
@Bean | 使得Spring框架自动调用此方法,并管理此方法返回的结果,@Bean方法必须存在于@Configuration类中 |
@ComponentScan | 组件扫描,当加载到此注解时,Spring会扫描此注解配置的根包下是否存在组件类,如果存在,会自动创建组件类的对象,如果某些类不是组件,会被跳过(无视) |
@Component | 组件注解,添加在类的声明之前,表示此类是组件类,是通用注解,应该添加在不是控制器类,也不是业务逻辑类,也不是数据访问类的类上 |
@Controller | 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在控制器类上 |
@Service | 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在业务逻辑类上 |
@Repository | 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在数据访问类上 |
@scope | 配置Spring Bean的作用域,当配置为@Scope("prototype") 时,Spring Bean将是“非单例的” |
@Lazy | 配置单例的Spring Bean是否是“懒加载”的,当在@Bean方法之前,或在组件类的声明之前添加此注解,则会使得此Spring Bean是懒加载的 |
@Autowired | 自动装配(布线) 的注解,当某个属性需要被Spring装配值时,在属性之前添加此注解 |
@Qualifier | 在自动装配方法参数时指定beanName |
@Resource | 自动装配(布线) 的注解 |
8.Spring运行流程
Spring跑起来:ACAC
获取对象
测试使用
结束
注解格式: 类型 参数名(value...) [default默认值] 1. value可以不写
2. @AliasFor==等效于
3. 数组类型,只写一个的时候大括号可以不写 ※语义: 见注解属性(参数名)知其意思
※引申: 设计大于需求
※所有的注解的意义或作用,都取决于运行环境或调用者
Spring Bean的作用域
默认是单例预加载(常用)
注解
singleton 只使用1个实例 prototype 每次引用到bean时都会创建新的实例 session 每个用户会话创建新的实例 - 仅限Web环境 request 每个请求创建新的实例 - 仅限Web环境 对象加载
- 单例模式
- 预加载 Spring启动时就开始创建对象
- 懒加载 @Lazy 需要获取对象时才加载
- 单例模式
自动装配机制
- Spring的自动装配机制表现为:当某个量需要被赋值时,可以使用特定的语法,使得Spring尝试从容器找到合适的值,并自动完成赋值
- 最典型的表现就是在类的属性上添加@Autowired注解,Spring就会尝试从容器中找到合适的值为这个属性赋值
1.@Autowired的装配机制
- 关于@Autowired的装配机制,首先,会根据需要装配的数据的类型在Spring容器中统计匹配的Bean(对象)的数量
- 当匹配的Bean数量为0个时,判断@Autowired注解的required属性值– true(默认):装配失败,启动项目时即抛出NoSuchBeanDefinitionException– false:放弃自动装配,不会报告异常,后续直接使用此属性时,会出现NPE
- 当匹配的Bean数量为1个时,将直接装配,且装配成功
- 当匹配的Bean数量为多个时:自动尝试按照名称实现装配(即:要求属性名称与beanName相同)
- 存在与属性名称匹配的Spring Bean:装配成功
- 不存在与属性名称匹配的Spring Bean:装配失败,启动项目时即抛出NoUniqueBeanDefinitionException
2.※重要小结:
自动装配的前提是Spring会自动创建此类的对象
;否则Spring不可能为属性赋值,也不可能调用类中的方法- @Autowired为属性赋值(自动装配依赖注入)
- 自动装配方法传参(Spring可以找到此对象)
4-1 Spring框架基础知识的更多相关文章
- Spring框架基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类
一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...
- Spring框架基础2
Spring框架基础2 测试Spring的AOP思想和注解的使用 导包(在前面的基础上添加) SpringAOP名词解释 AOP编程思想:横向重复代码,纵向抽取:就是说多个地方重复的代码可以抽取出来公 ...
- DDD框架基础知识
DDD框架基础知识 参考: https://www.cnblogs.com/zhili/p/OnlineStorewithDDD.html(领域驱动设计,分层架构) https://www.cnblo ...
- Spring学习指南-第二章-Spring框架基础(完)
第二章 Spring框架基础 面向接口编程的设计方法 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...
- Spring MVC基础知识整理➣环境搭建和Hello World
概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...
- spring之基础知识总结
spring是轻量级的(非侵入式,不用继承spring中的父类等).Spring框架主要提供了IoC容器.AOP.数据访问.Web开发.消息.测试等相关技术.本文主要介绍Spring中的一些小知识点, ...
- Spring框架基础
1 Spring框架 1.1 Spring的基本概念 是一个轻量级的框架,提供基础的开发包,包括消息.web通讯.数据库.大数据.授权.手机应用.session管理 ...
随机推荐
- Python模块 | EasyGui
(Python模块 | EasyGui | 2021/04/08) 目录 什么是 EasyGUI? [EasyGui中的函数] msbox | 使用示例 ynbox | 使用示例 ccbox | 使用 ...
- kvm 虚拟化技术 1.2 之配置网络桥接
实验一:配置网路桥接模式 默认kvm的网络是NAT模式,一般生产环境用桥接模式,把虚拟机改成桥接模式 1.查看是否安装网桥设备 [root@kibana opt]# rpm -qa|grep brid ...
- vue大型电商项目尚品汇(前台篇)day01
学完vue2还是决定先做一个比较经典,也比较大的项目来练练手好一点,vue3的知识不用那么着急,先把vue2用熟练了,vue3随时都能学. 这个项目确实很经典包含了登录注册.购物车电商网站该有的都有, ...
- Docker部署mysql 5.7
Docker部署mysql 5.7 准备工作 在CentOS或者Linux创建部署目录,用于存放容器的配置和MySQL数据:目的是当重装或者升级容器时,配置文件和数据不会丢失.执行以下命令: a.创建 ...
- 无线:WEP
WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络.不过密码分析学家已经找出 W ...
- DOM树
一.DOM树一共有12种节点类型,常用的有4种: 1.Document类型(document节点)--DOM的"入口点" 2.Element节点(元素节点)--HTML标签,树构建 ...
- singlelinklist
C++实现单链表 阅读先知 链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素. 链表中每一个元素成为"结点",每一个结点都是由数 ...
- netty系列之:我有一个可扩展的Enum你要不要看一下?
目录 简介 enum和Enum netty中可扩展的Enum:ConstantPool 使用ConstantPool 总结 简介 很多人都用过java中的枚举,枚举是JAVA 1.5中引用的一个新的类 ...
- 『忘了再学』Shell基础 — 27、AWK编程的介绍和基本使用
目录 1.AWK介绍 (1)AWK概述 (2)printf格式化输出 (3)printf命令说明 2.AWK的基本使用 (1)AWK命令说明 (2)AWK命令使用 1.AWK介绍 (1)AWK概述 A ...
- Java绘图基础
<零基础学Java> Java绘图基础 绘图是高级程序设计中非常重要的技术,例如,应用程序需要绘制闪屏图像.背景图像.组件外观Web程序可以绘制统计图.数据库存储的图像资源等. Graph ...