| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 53.整理Spring -> 正文阅读 |
|
[Java知识库]53.整理Spring |
Spring的组成
IOC?控制反转,将对象的控制权交给框架,由框架来负责控制对象的生命周期和对象之间的依赖关系,对于某个对象而言,以前是由自己控制它所引用对象的什么周期,在IOC中,所有对象都被Spring控制,容器帮我们创建,查找和注入对象,引用对象只是被动的接受依赖对象 DI是什么?在程序运行的时候,动态的向某个对象提供它所需要的其他对象,这一点是通过DI来实现的,具体是通过反射实现注入,反射允许程序在运行的时候动态的生成对象,执行对象方法,改变对象的属性 IoC的原理?其实现原理是工厂模式+反射机制 AOP?一般称之为面向切面,作为面向对象的一种补充,用于哪些与业务无关,但是却对多个对象产生影响的公共行为和逻辑,抽取并且封装为一个可用的模块,这个模块被命名为切面,可用于权限认证,日志,事务处理 aop的原理?aop实现的关键在于代理模式,代理模式分为静态代理和动态代理,静态代理的代表为AspectJ,动态代理则以aop为代表 AspectJ是静态代理:也称为编译时增强,aop框架在编译阶段生成aopdialing类,将AspectJ织入到java字节码中,运行的时候就是增强后的aop对象 AOP使用的动态代理又分为JDK动态代理和CGLIB动态代理:
Spring的通知有哪些类型,执行顺序是怎样的?
没有异常情况的执行流程:
有异常时的执行流程:
BeanFactory和ApplicationContext有什么区别?ApplicationContext是BeanFactory的子类,它提供了更多功能,比如国际化,资源文件的访问,在监听器中注册bean事件,载入多个上下文 BeanFactory以延迟加载注入bean,ApplicationContext在容器启动的时候创建所有Bean,这样可以一早发现配置的错误 BeanFactory以编程方式创建,ApplicationContext可以以声明方式被创建 SpringBean的生命周期?
Bean的作用域?singleton:默认,单例 prototype:为每个bean请求创建一个实例 request:为每个request请求创建一个实例,请求完成后,会对其进行回收 session:一个session会话共享一个实例 global-session:全局作用域,所有会话共享一个实例 Spring中的Bean是否线程安全?原型模式安全,单利模式下不安全,对于controller,service,dao等,这些bean是无状态的,只关注方法本身,所以也不存在安全问题 对于有状态的bean比如Model和View,就需要自行保证线程安全,可以采用ThreadLocal解决线程安全问题,为每个线程提供一个独立的变量副本,不同线程只操作自己线程的副本变量 什么是Spring MVC?通过把Model,View和Controller分离,将web层进行职责解耦,把复杂的web应用分成了逻辑清晰的几部分简化开发,减少出错,方便开发人员之间的配合 MVC流程?
#{}和${}的区别是什么?前者是预处理,后者是字符串替换,前者可以有效的防止sql注入,提高系统安全 通常一个mapper.xml都会对应一个dao接口,原理是什么,dao接口里的方法,参数不同的时候,方法是否能重载?Mapper接口的工作原理是jdk动态代理,mybatis运行时会使用jdk动态代理为mapper接口生成代理对象proxy,代理对象拦截接口方法,根据类的全限定名+方法名,定位到一个MapperStatement并且调用执行器,执行代表的sql Mapper接口里的方法不能重载,因为使用的是全限定名+方法名的保存和寻找策略 当实体类中的属性名和表中字段名不一致怎么办?取别名,使得别名和实体类名一致
映射对应关系
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/23 22:45:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |