
Spring提供了JMS层的抽象,正确。
JDBC抽象和DAO模块,使用JDBC经常导致大量的重复代码,取得连接、创建语句、处理结果集,然后关闭连接。Spring的JDBC和DAO模块抽取了这些重复代码,因此你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限与服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring
目的,解决企业应用开发的复杂性,功能,使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,范围,任何Java应用。
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
扩展资料
Spring框架最基础的部分,它提供了依赖注入(DependencyInjection)特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,它是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IoC将应用配置和依赖说明从实际的应用代码中分离出来。
应用上下文(Context)模块,核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。这个模块扩展了BeanFactory的概念,增加了对国际化(I18N)消息、事件传播以及验证的支持。
另外,这个模块提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持。
Spring的AOP模块,Spring在它的AOP模块中提供了对面向切面编程的丰富支持。这个模块是在Spring应用中实现切面编程的基础。为了确保Spring与其它AOP框架的互用性,Spring的AOP支持基于AOP联盟定义的API。
AOP联盟是一个开源项目,它的目标是通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性。通过访问他们的站点,你可以找到关于AOP联盟的更多内容。
Spring的AOP模块也将元数据编程引入了Spring。使用Spring的元数据支持,你可以为你的源代码增加注释,指示Spring在何处以及如何应用切面函数。
参考资料:
SSH为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。\x0d\集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(DataAccessObjects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。\x0d\具体内容包括:\x0d\Struts\x0d\Struts对Model,View和Controller都提供了对应的组件。\x0d\ActionServlet,这个类是Struts1的核心控制器,负责拦截来自用户的请求。\x0d\Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。\x0d\Model部分:\x0d\由ActionForm和JavaBean组成,其中ActionForm用于将用户的请求参数封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。\x0d\JavaBean则封装了底层的业务逻辑,包括数据库访问等。\x0d\View部分:\x0d\该部分采用JSP(或HTML、PHP)实现。\x0d\Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。\x0d\Controller组件:\x0d\Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。\x0d\系统核心控制器,对应上边的ActionServlet。该控制器继承了>
永泰隆使用的AOP框架是Spring AOP。Spring AOP是Spring框架中的一个模块,它提供了面向切面编程的支持,可以让开发者将通用的横切关注点(如日志记录、性能统计、安全控制等)与业务逻辑进行分离。Spring AOP基于代理模式实现,通过在运行时动态地为目标对象创建一个代理对象,从而实现对目标对象的增强。
Spring AOP主要由以下四个部分组成:
1 切入点(Pointcut):定义了在哪些连接点(Join Point)上应用通知(Advice)。
2 通知(Advice):定义了在切入点处执行的逻辑。
3 切面(Aspect):切入点和通知的组合。
4 织入(Weaving):将切面应用到目标对象中,并创建代理对象。
在永泰隆中,使用Spring AOP可以实现很多功能,比如在日志记录、安全验证、性能监控等方面都可以应用。例如,在日志记录方面,可以通过定义切入点,将通知织入到目标方法的前后,实现对方法的入参、返回值等信息的记录。在安全验证方面,可以通过定义切入点,将通知织入到需要进行权限验证的方法中,实现对用户权限的控制。在性能监控方面,可以通过定义切入点,将通知织入到需要进行性能统计的方法中,实现对方法的执行时间等信息的监控。总之,Spring AOP是一个非常强大的AOP框架,可以帮助开发者更好地分离关注点,提高代码的可维护性和可重复使用性。
一、Spring常见问题
1、Spring 在ssm中起什么作用?
Spring:轻量级框架
作用:Bean工厂,用来管理Bean的生命周期和框架集成。
两大核心:
IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory
AOP:面向切面编程
2、Spring的事务?
编程式事务管理:编程方式管理事务,极大灵活性,难维护。
声明式事务管理:可以将业务代码和事务管理分离,用注解和xml配置来管理事务。
3、IOC 在项目中的作用?
作用:Ioc解决对象之间的依赖问题,把所有Bean的依赖关系通过配置文件或注解关联起来,降低了耦合度。
4、Spring的配置文件中的内容?
开启事务注解驱动
事务管理器
开启注解功能,并配置扫描包
配置数据库
配置SQL会话工厂,别名,映射文件
不用编写Dao层的实现类
5、Spring下的注解?
注册
@Controller @Service @Component
注入
@Autowired @Resource
请求地址
@RequestMapping
返回具体数据类型而非跳转
@ResponseBody
6、Spring DI 的三种方式
构造器注入:通过构造方法初始化
<constructor-arg index="0" type="javalangString" value="宝马"></constructor-arg>
setter方法注入:通过setter方法初始化
<property name="id" value="1111"></property>
接口注入
7、Spring主要使用了什么模式?
工厂模式:每个Bean的创建通过方法
单例模式:默认的每个Bean的作用域都是单例
代理模式:关于Aop的实现通过代理模式
8、IOC,AOP的实现原理?
IOC:通过反射机制生成对象注入
AOP:动态代理
二、SpringMvc常见问题
1、SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
问题:单例模式,在多线程访问时有线程安全问题
解决方法:不要用同步,在控制器里面不能写字段
2、SpringMvc 中控制器的注解?
@Controller:该注解表明该类扮演控制器的角色
3、@RequestMapping 注解用在类上的作用?
作用:用来映射一个URL到一个类或者一个特定的处理方法上
4、前台多个参数,这些参数都是一个对象,快速得到对象?
方法:直接在方法中声明这个对象,SpringMvc就自动把属性赋值到这个对象里面
5、SpringMvc中函数的返回值?
String,ModelAndView,List,Set 等
一般String,Ajax请求,返回一个List集合
6、SpringMvc中的转发和重定向
转发: return:"hello"
重定向 :return:"redirect:hellojsp"
7、SpringMvc和Ajax之间的相互调用?
通过JackSon框架把java里面对象直接转换成js可识别的json对象,具体步骤如下:
1、加入JackSonjar
2、在配置文件中配置json的映射
3、在接受Ajax方法里面直接返回Object,list等,方法前面需要加上注解@ResponseBody
8、SpringMvc的工作流程图
1、DispatcherServlet前端控制器接收发过来的请求,交给HandlerMapping处理器映射器
2、HandlerMapping处理器映射器,根据请求路径找到相应的HandlerAdapter处理器适配器(处理器适配器就是那些拦截器或Controller)
3、HandlerAdapter处理器适配器,处理一些功能请求,返回一个ModelAndView对象(包括模型数据、逻辑视图名)
4、ViewResolver视图解析器,先根据ModelAndView中设置的View解析具体视图
5、然后再将Model模型中的数据渲染到View上
9、Struts2 和 SpringMvc的区别
入口不同:
Struts2:filter过滤器
SpringMvc:一个Servlet即前端控制器
开发方式不同:
Struts2:基于类开发,传递参数通过类的属性,只能设置为多例
SpringMvc:基于方法开发(一个url对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)
请求方式不同:
Struts2:值栈村塾请求和响应的数据,通过OGNL存取数据
SpringMvc:通过参数解析器将request请求内容解析,给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面,jsp视图解析器默认使用的是jstl。
三、Mybatis常见问题
1、Ibatis和Mybatis?
Ibatis:2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被mybatis拍在沙滩上。
Mybatis:Ibatis的升级版本。
2、什么是Mybatis的接口绑定,有什么好处?
Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
3、什么情况用注解,什么情况用xml绑定?
注解使用情况:Sql语句简单时
xml绑定使用情况:xml绑定 (@RequestMap用来绑定xml文件)
4、Mybatis在核心处理类叫什么
SqlSession
5、查询表名和返回实体Bean对象不一致,如何处理?
映射键值对即可
<result column="title" property="title" javaType="javalangString"/>column:数据库中表的列名
property:实体Bean中的属性名
6、Mybatis的好处?
把Sql语句从Java中独立出来。
封装了底层的JDBC,API的调用,并且能够将结果集自动转换成JavaBean对象,简化了Java数据库编程的重复工作。
自己编写Sql语句,更加的灵活。
入参无需用对象封装(或者map封装),使用@Param注解
7、Mybatis配置一对多?
<collection property="topicComment" column="id" ofType="comtmfbbspojoComment" select="selectComment" />property:属性名
column:共同列
ofType:集合中元素的类型
select:要连接的查询
8、Mybatis配置一对一?
<association property="topicType" select="selectType" column="topics_type_id" javaType="comtmfbbspojoType"/>property:属性名
select:要连接的查询
column:共同列
javaType:集合中元素的类型
9 、${} 和 #{}的区别?
${}:预编译处理,把${}直接替换成变量的值,不做任何转换。
#{}:字符串替换,sql中的#{}替换成?,有效的防止Sql语句注入。
总结:一般用#{}来进行列的代替
10、获取上一次自动生成的主键值?
select last _insert_id()
11、Mybatis如何分页,分页原理?
RowBounds对象分页
在Sql内直接书写,带有物理分页
12、Mybatis工作原理?
原理:
通过SqlSessionFactoryBuilder从mybatis-configxml配置文件中构建出SqlSessionFactory。
SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。
完成数据库的CRUD *** 作和事务提交,关闭SqlSession。
1 以下列出的IDE(集成开发环境)中,(c )用于C#软件开发。
A Eclipse
B TurboC
C VisualStudio
D FlashBuilder
2 C#是一种( a )编程语言。
A 面向对象
B 面向过程
C 面向机器
D 面向切面
3 以下关于“变量”的描述中,正确的是(a)。
A 变量是能够改变内容的占位符
B 变量是不能改变内容的占位符
C 变量是所要执行的某种 *** 作的表示
D 以上选项均不正确
4 以下列出的语句中,(a )是条件分支语句。
A if
B break
C continue
D return
5 以下列出的事物中,( a)是类。
A **:《智取威虎山》 (类是抽象的,不占用内存,而对象是具体的,占用存储空间)
B 杜甫
C 嫦娥一号绕月卫星
D 高铁
6 以下列出的事物中,(c)是对象。
A 教材:《C#初学者指南》
B 宰相
C 病毒 (在内存上有意义,对象是具体的,占用存储空间)
D 诗歌
7 以下关于“SystemObject”类的描述,正确的是(d)。
A 只能实例化为一个对象
B 是所有类的父类 (父类是直接继承,object是所有类的终极基类,并不是所有类的父类)
C 实现了若干接口
D 以上选项均不正确
8 以下关于“SystemString”类的描述,正确的是(d)。(符串是 Unicode 字符的有序集合,用于表示文本。String 对象是 SystemChar 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的)
A 表示一个字符
B 不能表示转义字符
C 表示一个字符串
D 以上选项均不正确
9 以下关于“继承”的描述,正确的是(a)。
A 是面向过程程序设计语言的特性
B 也称为“扩展”
C 使用sealed关键字实现
D 任何类都可以被继承
10 以下类中,(d)不是数字。
A SystemByte
B SystemInt16
C SystemSingle
D SystemDateTime
11 以下类中,(c)与“int”关键字对应。
A SystemByte
B SystemInt16
C SystemInt32
D SystemInt64
12 以下关于“解析”的描述,正确的是(d)。
A 解析负责把字符串转化为数字或日期
B 把数字转化为字符串,称为数字解析
C 把日期转化为字符串,称为日期解析
D 以上选项均不正确
13 以下语言元素中,(c)可以被实例化为对象。
A 接口
B 抽象类
C null
D 异常
14 以下关于“枚举”的描述,正确的是(b)。
A 使用“struct”关键字声明枚举
B 枚举可以是独立的,也可以是类的一部分
C 枚举不是数据类型
D 枚举的值不区分大小写
15 以下列出的类中,(d)不是集合类。
A SystemArray
B SystemCollectionsGenericList
C SystemCollectionsGenericHashSet
D SystemCollectionsGenericQueue
16 以下列出的类中,(d)不是流。
A SystemIOFileStream
B SystemNetSocketsNetworkStream
C SystemIOMemoryStream
D SystemIODirectory
17 创建文件有可能抛出(a)异常。
A SystemIOIOException
B SystemApplicationException
C ArithmeticException
D DivideByZeroException
18 微软在NETFramework 30中添加了(a)技术,用于开发桌面应用程序。
A WPF
B GDI+
C WindowsForms
E Swing
19 微软在(a)中就开始提供“ADONET”技术,用于访问数据。
A NETFramework 10
B NETFramework 20
C NETFramework 30
D NETFramework 40
20 以下关于“ADONET”的描述,正确的是(d)。
A 架构上与“ADO”相同
B 不同的数据库试用相同的协议
C 不可用于访问XML数据
D 可用于访问关系型数据库
以上就是关于spring提供了jms层的抽象,对吗全部的内容,包括:spring提供了jms层的抽象,对吗、Java中的“SSH”是什么、永泰隆用哪个aop等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)