IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring相关基础(上) -> 正文阅读

[Java知识库]Spring相关基础(上)

Spring相关基础

一、什么是Spring?

Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 Spring为不同的层都提供的企业级解决方案:
web层:spring mvc service层:spring dao层:mybatis
Spring的核心思想是IoC(控制反转)和AOP(面向切面编程)

二、为什么要使用Spring?

1.方便解耦,简化开发
Spring就是一个大工厂(容器),用于创建对象(bean)和维护对象间的依赖关系。
2.AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能.
声明式事务的支持 ,只需要通过配置就可以完成对事务的管理,而无需手动编程
3.方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序
4.方便集成各种优秀框架
Spring支持各种优秀框架(如:SpringMVC、Mybatis、SpringBoot、SpringCloud等)
5.降低JavaEE API的使用难度
封装了一些API(JDBC、JavaMail等)降低开发

三、Spring Bean有哪些配置方式??

1.基于XML配置
在XML文件中通过元素定义Bean,如:
2.基于注解配置
在Bean实现类处通过标注@Component或衍型类(@Repository、@Service及@Controller)定义Bean
3.基于Java类配置
在标注了@Configuration的Java类中,通过在类方法上标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑

四、Spring框架中的单例Bean是线程安全的吗?

线程安全产生的原因是,多个线程对共享数据同时进行修改。
该问题分以下俩种情况:
1.有问题:如果类中存在成员变量(即共享数据),且成员变量中的数据在方法中会被修改,此时可能会产生线程安全问题;
2.没有问题:如果Bean没有成员变量,或者成员变量数据在访问的时候不会被修改,则不会产生线程安全问题。

五、Spring和SpringBoot中的扫描机制

1.Spring组件扫描:
在spring的配置类中使用@ComponentScan(basePackages = “com.czxy”)可以扫描com.czxy包以及子包下添加了指定注解的类。
常见的注解有: @Component、@Service、@Controller、@Repository

2.SpringBoot扫描机制
1)默认扫描规则,SpringBoot中会自动扫描启动类所在包及其子包中的所有添加了指定注解类
2)使用@ComponentScan注解可以覆盖默认扫描规则。

六、 Spring Bean的自动装配(自动注入)是怎么一回事?

自动装配,自动完成各个bean之间的依赖关系装配。
Spring提供了5种自动装配模式:
1.no:默认值,没有使用自动装配
2.byName 按照属性名自动装配。
3.byType 按照属性的数据类型自动装配。如果存在不止一个这样的bean,将抛出异常。
4.constructor 按照构造函数参数类型自动装配。(常见于xml配置)
5.default :默认值no

七、自动装配有哪些局限性?

  1. 不能自动装配基本数据类型、字符串、数组等

八、@Autowired和@Resource注解如何理解?

两个注解都可以完成依赖注入功能。
1.@Autowired:
@Autowired : 默认是以byType按类型自动注入。
@Autowired + @Qualifier(“名称”):将按照名称自动注入
2.@Resource:
@Resource() 如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称注入,
如果注解写在setter方法上默认取属性名进行注入。
当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
@Resource(name=“”) 将按照名称自动注入

九、Spring不通过注入的方式怎么获取到对象?

1.通过ApplicationContext手动获取:手动加载xml或配置类获得上下文对象,通过getBean()获得指定名称的bean。

2.实现BeanFactoryAware接口:先获得BeanFactory,再getBean()获得指定名称的bean。
3.实现ApplicationContextAware 接口 :先获得ApplicationContext,再getBean()获得指定名称的bean。

参考:
https://www.aliyun.com/jiaocheng/812869.html

十、什么是控制反转(IoC)?

IoC:Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。Ioc意味着将你设计好的对象交给容器控制,而不是new。
IoC 控制反转,指将对象的创建权,反转到Spring容器

十一、什么是Spring IoC容器?

IOC容器就是一个Map集合,里面存放实例化的对象

十二、IoC有哪些优点?

1.减少代码的耦合,可以使应用更加模块化
2.增加代码的复用率
3.资源更加统一管理
4.维护代码更加方便,一般只需要修改一下配置文件就ok了。
5.提升了程序的测试性
链接:https://www.imooc.com/article/35099

十三、什么是依赖注入(DI)?

DI:Dependency Injection 依赖注入,在Spring框架创建Bean对象时,动态的将依赖对象注入到Bean组件

十四、DI是怎么实现的?

    ①setter注入:
    ②构造器注入:
    ③注解注入

十五、IoC和DI的关系

IoC 控制反转,指将对象的创建权,反转到Spring容器 , DI
依赖注入,指Spring创建对象的过程中,将对象依赖属性通过配置进行注入 DI依赖注入不能单独存在,必须在IoC控制反转的基础上才能完成。

十六、怎么用Spring框架下实现IoC?

IoC控制反转:指将对象的创建权,反转到Spring容器 方式1:创建工厂
创建一## 标题个工厂,用于创建目标对象,就是最简单的IoC。但工厂和目标类耦合。 方式2:工厂 + 配置文件
1)配置文件中存放类的全限定名称
2)编写工厂,用于读取配置文件中的内容,并通过反射创建对象。
问题:工厂只能生产一个对象 方式3:工厂 + properties文件
1)properties配置文件存放一组,key是标识,value是全限定名称
2)编写工厂类,读取配置文件
3)提供getBean( name ) 用于生成实例:通过name获得对应的全限定名称,再通过反射创建对应的实例。

十七、Spring的拦截如何实现?

使用AOP,使用前置通知、后置通知、环绕通知等等去实现拦截

AOP相关基础点见下篇。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 18:48:02  更:2022-05-21 18:50:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/19 8:28:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码