摘自网络
1 Spring工作原理
1.首先读取配置文件到容器中。
2.通过java反射机制将配置文件中描述的对象转换成java对象;
3.将这些java对象按照配置文件中的定义将他们注入到各自匹配的对象中去。
2 为什么要用Spring?
Spring的目的是让对象与对象之间的关系没有通过代码来关联,通过配置文件说明管理。Spring容器的核心功能是IOC和AOP。IOC即控制反转,动态注入。使用对象之前不必使用new关键字自己创建,从IOC容器中直接获取。
AOP即面向切面编程,提供对某一类对象的事物管理服务。(调用该类具体方法的前后调用指定模块)
3 Spring中的BeanFactory与ApplicationContext的作用有哪些?
BeanFactory负责创建和分发各种bean;
在创建bean的同时负责协调bean之间的关系,从而降低bean之间的耦合性;
调用用户定义的创建和销毁方法,负责Bean的生命周期;
ApplicationContext提供了文本解析工具,包括对国际化的支持。
提供了载入文件资源的通用方法,如载入图片。
向注册为监听器的Bean发送事件。
4 如何在spring中实现国际化?
添加Spring表单标签库tld文件
在web.xml文件中添加该标签库的引用
创建资源库文件ApplicationResources.properties利用native2ascii工具将目标文件转换为要国际化的语言类别
在applicationContext.xml文件中添加资源库配置
标签化JSP页面中的文字
5 使用spring有什么好处?
1.提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。
2. 采用了分层结构,可以增量引入到项目中。
3. 有利于面向接口编程习惯的养成。
4. 目的之一是为了写出易于测试的代码。
5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。
6. 一致的数据访问介面。
7. 一个轻量级的架构解决方案。
6 什么是spring?它有什么特点?
Spring是轻量级的控制反转和面向切面的容器框架。
具有分层的体系结构,可以选择自己需要的功能模块。
简化系统架构的设计,提供管理业务对象的方法。
不仅不会对其他框架有依赖性,还提供对其他框架(Struts、Hibernate)的更好的粘合的机制
7 Hibernate应用与传统JDBC应用的比较
Hibernate是java对象/关系数据库映射工具。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
(1).关系型数据库与JDBC是一对一的关系,只需要简单配置就可以实现,所以Hib系,Hibernate与关系型数据库是一对多的关ernate是跨数据库平台的。
(2)代码中,Hibernate可以不使用本地化SQL语句完成对数据的SUDI,与数据库是松耦合,JDBC不能。
(3)Hibernate很好地兼容了JDBC,可以在代码中直接嵌入JDBC API,但不提倡这样做。
(4)Hibernate拥有数据连接池实现机制(sessionFactory)。
8 什么是aop,aop的作用是什么?
AOP即面向切面编程。AOP提供对某一类对象的事物管理服务。(调用该类具体方法的前后调用指定模块)
9 请阐述Spring框架和EJB相比较,各自的优缺点?
EJB 是优良的业务对象分布式框架,EJB容器具有事务管理,安全机制功能;
EJB是重量级的,部署麻烦;
EJB 代码不能脱离EJB 容器;
购买EJB 容器价钱昂贵,启动缓慢;
Spring框架是轻量级的架构,支持EJB并对其实现更加简化,实现了解耦,并脱离了容器;
中断了应用程序的逻辑,使代码变得不完整,不直观。
将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。
失去了IDE的支持。
调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。
10 在Spring IoC核心模式中,试比较二种推荐的依赖注入方式的相同点和不同点?
设置注入和构造注入都具有无侵入性的特点。
构造注入:
构造注入避免了烦琐的setter方法的编写,从而使得组件被创建后处于相对稳定状态;
类之间的关联关系仅在构造函数中表达,使得系统层次清晰;
通过构造注入,可以在构造函数中决定依赖关系得注入顺序,优先依赖的先注入;
设置注入:
通过setter方法设定依赖关系显得更加直观,自然;
如果依赖关系(或继承关系)较为复杂,设置注入则更为简洁;
对于某些第三方类库,有求组件必须提供默认的构造函数,此时构造注入就有了局限性,采用设置注入为佳。
11 Spring中Bean的自动装配都有哪些选择?
1:-->byName模式:这种模式是通过bean的属性名字进行自动装配的,也就是说在xml配置文件中查找一个与将要装配的属性相同名字的bean。2:--->byType模式
byType就是指的如果在.xml配置文件中有一个与属性类型一样的Bean,则spring就会自动装配这个属性,如果要是多于一个这样的bean的话,则程序会抛出异常.我们知道要使用byName模式的话Bean的ID 必须和属性名称想对应,如果我们使用byTpe模式的话,则不用考虑Bean的ID名称与属性名称的问题了.对于byType匹配模式我们就不在给出范例了,大家只要把上面两个范例中的byName该成byType即可.
3:--->constructor
constructor模式就是根据构造函数的参数进行自动装配、
4:--->autodetect模式
autodetect模式就是指通过对Bean检查类的内部来选择是使用constructor模式装配还是使用byType模式装配,如果先找到的是constructor模式那么就使用constructor模式进行装配,如果没有constructor,而找到了byType,那么就使用byType,同样这种模式也不给出具体范例了,大家按照上述范例进行改造以下就可以了,这样也可以锻炼以下大家的动手能力,如果有什么问题,大家可以按照首页上给出的联系方式与我联系.接下来我门来看以下最后一种装配模式.
5:--->no模式
相信大家从字面上的意思理解,就可以知道这种模式的意思了,既不使用自动装配模式,这种也是默认的配置,在很多企业级的应用中并不鼓励使用自动装配模式,因为它对于Bean之间的参考依赖关系不清晰
12 Spring 框架的7 个模块功能
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
(1)核心容器(Spring Core)
这是Spring框架最基础的部分,它提供了依赖注入特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,这是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IOC将应用配置和依赖说明从实际的应用代码中分离出来。
(2)Spring 上下文(Spring Context)
核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架,这个模块扩展了BeanFactory的概念,增加了对国际化消息,事件传播及验证的支持,同时提供了电子邮件、JNDI访问、远程等企业服务。
(3)Spring 的面向方面的编程(Spring AOP)
Spring在它的AOP模块中提供了面向切面编程的丰富支持。这个模块是在Spring应用中实现切面编程的基础。为了确保Spring与其它AOP框架的互用性,Spring的AOP支持基于AOP联盟定义的API。AOP是一个开源项目,通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性。同时将元数据编程引入了Spring,可以为你的源代码增加注释,指示Spring在何处以及如何应用于切面函数。
(4)Spring JDBC DAO 抽象层(Spring DAO)
使用JDBC经常导至大量的重复代码,取得连接、创建语句、处理结果集,然后关闭连接。Spring的JDBC和DAO模块抽取了这些重复代码,因此你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。
(5)Spring ORM 的对象关系工具(Spring ORM)
对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括:Hibernate、JDO和Ibatis SQL映射。
(6)Spring Web 模块(Spring Web)
Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用于的上下文。另外,这个模块还提供了一些面向服务支持,它也提供了Spring和其它Web框架的集成,比如:Struts.
(7)Spring MVC 框架(Spring Web MVC)
Spring为构建成Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IOC对控制逻辑和业务对象提供了完全的分离。
Spring真正的精华是它的Ioc模式实现的BeanFactory和AOP。
13 轻量级的J2EE应用开发框架的具体体现(Spring轻量级在J2EE应用开发框架的具体体现)
Spring Framework解决了许多在J2EE开发中常见的问题。
Spring的jar包一般不超过1M
Spring 简化并融合了EJB
Spring 通过配置文件管理Bean文件
14 “非侵入式”的体现以及如何达到“非侵入式”的设计目标
(1)“非侵入式”的体现
q 允许在应用系统中自由地选择和组装Spring的各功能模块,并且不强制要求应用中的类必须从Spring 的系统API中的某个类来继承或者实现某个接口。
q 同时提供和其它框架集成的接口,如与Hibernate、Struts 的集成等;
(2)如何达到“非侵入式”的设计目标
p 应用Java的Reflection机制
<property name=“bean1”><ref bean=“anotherbean”/></property>
p 并配合使用Spring中的核心的BeanWrapper和BeanFactory类组件---实现对象的创建和属性注入
15 为什么要面向接口进行设计
面向接口编程是面向对象的核心,面向接口设计可以提供不同灵活的子类实现,从而减少耦合性,增强代码稳定和健壮性。
16 模式和框架的区别
模式是一种设计思想,提供一种指导从而做出优良的设计方案;
框架是一种软件,一组组件;
设计模式比框架更抽象
框架比设计模式更加特征化
设计模式是比框架更小的体系结构元素
17 Struts运行原理
? 客户端请求*.do的路径。
? Struts框架的中心控制器(通常为ActionServlet类的实例,或者用户自定义的ActionServlet的子类的实例)截获到客户请求。
? 中心控制器根据struts-config.xml文件中配置的映射信息将请求转发给相应的Action组件对象来处理。
? 如果请求页面配置了对应的ActionForm组件,控制器类还会把表单数据填入ActionForm组件。
? 获得路径对应的Action组件的实例。
? 调用Action组件实例的execute方法处理请求,并传ActionForm对象。
? Action组件对象提取ActionForm组件对象中包含的请求数据,然后调用封装了业务逻辑的模型组件进行业务逻辑处理。
? Action对象根据模型组件的处理结果返回相应的ActionForward对象给中心控制器。
? 中心控制器根据struts-config.xml文件中的配置信息确定要跳转的页面。
? 跳转到ActionForward页面,呈现用户数据。
18 Struts中ActionForm有什么作用?
1、ActionForm Bean是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊方法,用于验证HTML表单数据以及将其属性重新设置为默认值。
2、Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。
3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改,JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。
19 简述手工搭建Struts开发部署环境步骤?
1、 添加支持的Struts jar包
2、 添加Struts的tld标签库文件
3、 创建struts-config.xml
4、 在web.xml文件中对Struts的ActionServlet进行配置声明
相关推荐
通过Spring-boot框架连结Neo4j搭建课程知识图谱,实现课程的KBQA问答系统以及相关课程信息的查询和D3.JS可视化 附有实现源码、Neo4j库和mysql库文件即相应训练的数据集和词汇表
1、该资源内项目代码都经过测试...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 -------- 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
适合人群:具备一定编程基础,工作1-3年的研发人员 能学到什么:①SpringCloud微服务框架、DL4J智能分类框架、Webmagic爬虫框架、RabbitMQ、Jenkins持续集成、IM、等是怎么在系统中体现的;②数据爬取、数据智能...
FlyCms 是一个类似知乎以问答为基础的完全开源的JAVA语言开发的社交网络建站程序,基于 Spring Boot
Titan社区(Titan Community),基于SSM ( Spring + SpringMVC + Mybatis)开发的知识问答社区 ## **项目介绍** Titan社区(Titan Community)是我在上个星期学习与研究完 **SSM ( Spring + SpringMVC + ...
V1.1 刘岗强 待定 新增自动问答 项目介绍 基于Spring Cloud Finchley SR2 Spring Boot 2.0.7的最新版本。 核心基础项目内实现类自定义的权限注解,配合RBAC权限模型+拦截器即可实现权限的控制,具体的参考项目中的...
java开发大猫聊天室源码Spring面试问答 点击 :star: 如果你喜欢这个项目。 拉取请求受到高度赞赏。 关注我获取技术更新。 目录 不。 问题 弹簧芯 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
FlyCms是一个类似知乎以问答为基础的完全开源的JAVA语言开发的社交网络建站程序,基于Spring Boot + Bootstrap3 + MyBatis + MYSQL + Solr + Ehcache应用架构,专注于社区内容的整理,归类和检索,其集合了问答,...
- 不懂运行,下载完可以私聊问...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
【springboot实战】参加广告流量变现【第三季】 【Spring Boot实战】Vue零基础入门【第四季】 【Spring Boot实战】快速构建免费HTTPS服务本地运行手册安装必备工具JDK,Maven克隆代码到本地git clone ...
以Spring Boot框架为载体,通过集成hanLP、neo4j、spark-mllib实现 知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,...
一、基础面试问答 _谈谈HashMap_ HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干 HashMap 最常用的两个方法 get ...
Spring Boot基础教程 本项目内容为Spring Boot教程程序样例。如您觉得该项目对您有用,欢迎点击右上方的Star按钮,给予支持!! 我的博客: 我的小密圈(深度交流与问答): GitHub: Gitee: Spring For All社区: ...
项目基础配置: 创建git仓库,本地配置idea并测试pull和push。 创建springboot工程,导入web,velocity和aop的包。 生成maven项目,pom.xml包含上述依赖。 数据库配置和首页的创建: 使用mysql创建数据库和表。 加入...
jspBB 论坛(问答)系统后台功能设置:基础设置、注册设置、邮箱设置、上传设置、水印设置、约束设置、敏感词 用户:角色管理、用户组管理、用户管理 内容:问题管理、回答管理、评论管理 系统:短信日志、访问日志...
包含JVM、JAVA集合、多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、HBASE、MongoDB、Cassandra、设计模式、负载均衡、数据库、加密算法、分布式缓存、Hadoop、...
* 烘焙技巧学习:平台提供多种烘焙技巧的学习模块,包括基础技巧、高级技巧和实用技巧等。 * 食谱分享:用户可以上传、编辑和删除自己的烘焙食谱,同时也可以浏览和收藏其他用户的食谱。 * 烘焙作品展示:用户可以在...
基于知识图谱的中文症状问答系统,前端vue.js,后端springboot 开发语言是java,运行环境是windows 用到的技术:word2vec,doc2vec,编辑距离,词性标注,依存句法分析,scrapy,sparql 用到的工具:jena,Neo4j,...
Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组...
#### 介绍 ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------