spring框架介绍

news2024/11/13 10:48:14

f4658b5cf74c434e9273608a8318d525.jpgspring

 

 

1.优点

  1)针对接口编程,解耦合

  2)aop:变向切面编程,动态增加功能

  3)方便集成框架,mybatis,hibernate,strust等

  4)降低j2ee接口的使用难度

 

2.spring是干什么的

  管理bean及bean的依赖关系的一个容器,为降低bean之间耦合度问题而开发,核心是控制反转(IOC)和面向切面编程(AOP)

    控制反转(IOC:):对象的创建交给容器来完成

    面向切面编程(AOP):系统级服务和主业务逻辑分开,降低耦合度,使系统级服务织入主业务逻辑

 

IOC:

3.(配置式开发)spring容器都干了什么

  读取配置文件

  创建bean对象(使用反射机制调用无参构造方法),将对象保存在内存Map中

  给有依赖关系的对象赋值

 

4.spring容器的实现接口有哪些

  ApplicationContext:创建容器时就创建了bean对象,并将对象放到内存中

  BeanFactory:创建容器对象时不创建bean对象(懒加载模式:用的时候才创建)

 

5.spring框架中bean对象的创建过程,有几种创建方式

  在配置文件中使用bean标签注册bean对象

  2种方式:

    默认创建方式:调用bean对象的无参构造方法

    (实例)工厂模式创建bean:需要在配置文件中注册工厂对象以及注册工厂对象的方法(此方式耦合度高,因为实例工厂中写死了Java对象)

 

6.什么是工厂模式,什么时候用工厂模式

  工厂模式:当创建对象时若比较繁琐,可以将这些繁琐的创建过程封装到一个方法中,调用此方法来创建对象,这就是工厂模式

  什么时候用:创建复杂对象时

 

7.spring框架中bean的作用域

  在配置文件中,使用scope关键子给bean指定作用域

  spring支持5种作用域:singleton(单例作用域,spring默认的作用域)、prototype(原型作用域:每创建一次都是新的对象)、request、session、globalSession

 

8.spring中给bean对象的属性赋值(也叫注入)

  对bean对象属性赋值同样是由容器完成的

  根据注入方式不同分为2种:

    设值注入:调用bean对象的set方法给属性赋值(常用)

    构造注入:调用bean对象的构造方法时给属性赋值并创建对象(不常用)

  根据注入的实现方式不同也分2种:

    1.基于配置文件:(掌握,内容较多,不常用)

    2.基于注解:(掌握,常用)

 

9.注解式开发bean对象的创建,创建前需要做什么

  在配置文件中使用context:component-scan标签注册组件扫描器

  多个包下都使用了注解怎么解决:

    1.使用多次context:component-scan标签

    2.base-package值中使用逗号或分号分隔(推荐使用此方法)

    3.指定父包(不推荐使用)

 

10.基于注解方式开发,创建bean对象有哪些注解,怎么用

  以下注解均是用于创建对象:

    @Repository:用在Dao层的类上

    @Service:用在Service层的类上

    @Controller:用在UI层的类上

    @Component:以上三个注解都不能使用或者不合格使用时就使用此注解,不使用value属性时,对象的名称默认是类名的首字母小写

 

11.基于注解方式开发,设置bean对象的作用域

  使用@Scope注解,在value值中设置

 

12.基于注解方式开发,给bean对象赋值有哪些注解,怎么用

  以下注解均是用于给属性赋值:

    @Value:给简单类型属性赋值,可以放在属性定义上(不需要set方法的),可以放在属性的set方法上

    @Autowired:spring框架中的。给引用类型的属性赋值,默认是按类型注入的。若按名称来注入需同时使用@Qualifier(value="BeanID")注解

      Autowired有一个属性required,默认为true,意思是必须成功给引用类型赋值,否则程序终止并报错。若为false意思是不能成功赋值则为null

    @Resource:不是spring框架中的,是jdk中的。给引用类型的属性赋值,默认是按类型注入的。若按名称来注入需要使用@Resource注解的name属性,name属性指定BeanID

  给属性赋值一般是设值注入,不使用构造注入。

 

13.bean对象的生命始末

  基于配置文件:在bean标签中使用属性init-method、destroy-method

  基于注解方式:在方法上使用@PostConstruct(bean对象初始化后执行)、@PreDestroy(bean对象销毁之前执行)

 

14.spring框架中配置文件和注解同时使用,谁的优先级高

  配置文件的优先级高

 

15.spring框架中配置文件和注解的优缺点

  配置文件:(灵活)对其所作的修改无需编译代码,只需重启服务器即可

  注解:(高效)配置方便,直观,但修改代码后需重新编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1468244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

私域运营-需要认清的事实

一、私域不能单纯依靠微信渠道 误区:很多企业仍停留在如何让用户在微信去分享裂变,然后带动新用户的阶段。 私域的核心在于“开源节流”,就是如何通过更多渠道获取更多客户,并且避免客户的批量流失。 私域讲究的是如何从公域的“…

【IDEA】安装Jrebel实现热部署

前言 devtool虽然也可以实现热部署 但是新增完方法和修改完参数后 热部署不生效 需要重启 而Jrebel却不用 功能也比devtool强大 但是收费 这里教大家怎么使用 插件下载 激活Jrebel

Qiskit模块介绍

中文版reference Terra Qiskit最基本的模块,相当于Qiskit包的前端,包含了Quantum Circuits、Transpiler等,包括了定义、编译量子电路,以及在模拟器或是量子设 备上运行电路的工具。 Aer 相当于Qiskit包的后端,高性能模拟器&…

DC与DCT DCG的区别

先进工艺不再wire load model进行静态时序分析,否则综合结果与后端物理电路差距很大,因此DC综合工具也进行了多次迭代,DC工具有两种模式,包括wire load mode和Topographical Mode,也就是对应的DC Expert和DC Ultra。 …

牛客网 HJ10 字符个数统计

思路: 我们创建两个数组,一个数组接受输入的字符,另一个数组用来统计字符种数 同时将该字符作为下标传给另一个数组,如果另一个数组的这个下标对应的值为0,说明该字符没有被统计过,计数器加1,…

vue+node.js美食分享推荐管理系统 io551

,本系统采用了 MySQL数据库的架构,在开始这项工作前,首先要设计好要用到的数据库表。该系统的使用者有二类:管理员和用户,主要功能包括个人信息修改,用户、美食类型、美食信息、订单信息、美食分享、课程大…

洛谷P8627 [蓝桥杯 2015 省 A] 饮料换购

#先看题目 题目描述 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那…

AD24-PCB的DRC电气性能检查

1、 2、如果报错器件选中,不能跳转时,按下图设置 3、开始出现以下提示时处理 4、到后期,错误改得差不多的时候;出现以下的处理步骤 ①将顶层和底层铜皮选中,移动200mm ②执行以下操作 ③将铜皮在移动回来,进…

使用向量数据库pinecone构建应用01:相似语义检索 Semantic Search

Building Applications with Vector Databases 下面是DeepLearning.AI上面这门课的学习笔记:https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement…

css3盒子

盒子模型 一.看透网页布局本质二.认识盒子三.盒子的边框(border)1.概念2.简写及分开写法3.合并问题(会相加)4.边框会影响盒子实际大小 四.盒子的内边距(padding)1.概念2.简写3.内边距会影响盒子实际大小4.特…

【Linux】docker构建环境编译运行linux内核

文章目录 1. 使用docker构建linux内核编译运行环境1.1. 为普通用户安装docker并验证是否安装成功1.1.1. 安装docker稳定版1.1.2. 启动docker1.1.3. 将当前用户加入docker用户组1.1.4. 验证docker是否安装成功 1.2. docker基本使用 环境说明 操作系统:ubuntu 22.04.4…

Unity(第四部)新手组件

暴力解释就是官方给你的功能;作用的对象上面如: 创建一个球体,给这个球体加上重力 所有物体都是一个空物体,加上一些组件才形成了所需要的GameObject。 这是一个空物体,在Scene场景中没有任何外在表现,因为…

【数据分享】不同共享社会经济路径下中国未来280个城市土地数量数据集(免费获取)

了解未来城市土地数量对于城市规划、社会经济发展和气候变化研究具有重要意义。通过分析不同共享社会经济路径下中国未来城市土地数量的数据,可以为未来城市发展趋势和可持续规划提供科学依据。 本次我们给大家带来的是不同共享社会经济路径下中国未来城市土地数量…

【Docker 的安装:centos】

文章目录 1 :peach:各版本平台支持情况:peach:2 :peach:CentOS 安装:peach:2.1 :apple:安装依赖:apple:2.2 :apple:安装 Docker:apple:2.3 :apple:实战经验:apple:2.3.1 :lemon:Docker 镜像源修改:lemon:2.3.2 :lemon:Docker 目录修改:lemon: 1 🍑各版本平台支持情况…

高通 Android 12 Settings不显示版本号问题

1、最近项目遇到一个奇葩问题,编译系统版本号不见了? 2、一开始我想着可能是自己代码没有make clean结果编译几个小时,然后烧录固件发现还是未生效。 3、然后这时候我又去看git log review最近修改也没有太大发现(待定&#xff…

模型 金字塔原理

系列文章 分享 模型,了解更多👉 模型_总纲目录。清晰逻辑,有效沟通。 1 金字塔原理的应用 1.1 应用金字塔原理提出一个新产品的市场推广策略 确认结论:我们应该采取在线社交媒体广告和口碑营销的策略来推广新产品。 构建层级1&…

python-mysql协程并发常用操作封装

目录 前言封装代码测试代码参考 前言 协程异步操作MYSQL是常用的,博主这里在GitHub上找了两个包,databases和aiomysql,第一个包除了mysql外还支持其他的数据库,且操作MYSQL时底层也是使用的aiomysql,但文档内容比较少…

C#上位机与三菱PLC的通信11---开发自己的通讯工具软件(WPF版)

1、先看颜值 2、开始干 1、创建项目 2、引入前面的通讯库 创建目录将前面生成的通讯库dll文件复制到项目的目录 本项目引入dll文件 3、创建命令基类 RelayCommand.cs代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst…

HEVC视频编解码标准学习笔记-1

视频编解码标准H.265/HEVC(High Efficiency Video Coding)通过将视频数据编码为更高效格式,大幅改善了视频流的压缩效率。这里主要介绍Tile、Slice和CTU的定义,以及介绍这些技术组件之间的相互关系。 CTU(编码树单元&…

【数据结构】C语言实现二叉树的相关操作

树 定义 树(Tree)是 n (n > 0) 个结点的有限集 若 n 0,称为空树 若 n > 0,则它满足如下两个条件: 有且仅有一个特定的称为根(Root)的结点其余结点可分为 m(m>0) 个互不相交的有限…