2022年Spring知识点总结整理版_第1页
2022年Spring知识点总结整理版_第2页
2022年Spring知识点总结整理版_第3页
2022年Spring知识点总结整理版_第4页
2022年Spring知识点总结整理版_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于spring几种集合对象简介ListFactoryBeanorg.springframework.beans.factory.config.ListFactoryBeanListFactoryBean类为开发者提供了一种在Springbean配备文献中创立一种详细列表集合类(ArrayList和LinkedList)。这里有一种ListFactoryBean示例,在运营时它将实例化一种ArrayList,并注入到一种bean属性。<bean

id="emails"

class="org.springframework.beans.factory.config.ListFactoryBean">

<property

name="sourceList">

<list>

<value></value>

<value></value>

<value></value>

<value></value>

</list>

</property>

</bean>

配备<beanid="CustomerBean"class="mon.Customer"> <propertyname="lists"> <beanclass="org.springframework.beans.factory.config.ListFactoryBean"> <propertyname="targetListClass"> <value>java.util.ArrayList</value> </property> <propertyname="sourceList"> <list> <value>one</value> <value>2</value> <value>three</value> </list> </property> </bean> </property></bean>代码publicclassApp{ publicstaticvoidmain(String[]args){ ApplicationContextcontext=newClassPathXmlApplicationContext( "applicationContext.xml"); Customercust=(Customer)context.getBean("CustomerBean"); System.out.println(cust); }}成果Customer[lists=[one,2,three]]Type=[classjava.util.ArrayList]MapFactoryBeanorg.springframework.beans.factory.config.MapFactoryBean<bean

id="emails"

class="org.springframework.beans.factory.config.MapFactoryBean">

<property

name="sourceMap">

<map>

<entry

key="pechorin"

value=""/>

<entry

key="raskolnikov"

value=""/>

<entry

key="stavrogin"

value=""/>

<entry

key="porfiry"

value=""/>

</map>

</property>

</bean>

SetFactoryBeanorg.springframework.beans.factory.config.SetFactoryBean<bean

id="emails"

class="org.springframework.beans.factory.config.SetFactoryBean">

<property

name="sourceSet">

<set>

<value></value>

<value></value>

<value></value>

<value></value>

</set>

</property>

</bean>

PropertiesFactoryBeanorg.springframework.beans.factory.config.PropertiesFactoryBean通过PropertiesFactoryBean来获取properties配制文献数据<bean

id="jdbcConfiguration"

class="org.springframework.beans.factory.config.PropertiesFactoryBean">

<property

name="location"

value="classpath:com/foo/perties"/>

</bean>PropertyPathFactoryBeanorg.springframework.beans.factory.config.PropertyPathFactoryBean通过PropertyPathFactoryBean来指定属性途径获取属性值<bean

id="testBean"

class="org.springframework.beans.TestBean"

singleton="false">

<property

name="age"

value="10"/>

<property

name="spouse">

<bean

class="org.springframework.beans.TestBean">

<property

name="age"

value="11"/>

</bean>

</property>

</bean>

<bean

id="testBean.age"

class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>

框架简介Spring是一种开源框架,Spring是于年兴起一种轻量级Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述某些理念和原型衍生而来。它是为理解决公司应用开发复杂性而创立。框架重要优势之一就是其分层架构,分层架构容许使用者选取使用哪一种组件,同步为J2EE应用程序开发提供集成框架。Spring使用基本JavaBean来完毕此前只也许由EJB完毕事情。然而,Spring用途不但限于服务器端开发。从简朴性、可测试性和松耦合角度而言,任何Java应用都可以从Spring中受益。Spring核心是控制反转(IoC)和面向切面(AOP)。简朴来说,Spring是一种分层JavaSE/EEfull-stack(一站式)轻量级开源框架。框架特性轻量——从大小与开销两方面而言Spring都是轻量。完整Spring框架可以在一种大小只有1MB多JAR文献里发布。并且Spring所需解决开销也是微局限性道。此外,Spring是非侵入式:典型地,Spring应用中对象不依赖于Spring特定类。AOP(面向切面)面向切面——Spring提供了面向切面编程丰富支持,容许通过度离应用业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性开发。应用对象只实现它们应当做——完毕业务逻辑——仅此而已。它们并不负责(甚至是意识)其他系统级关注点,例如日记或事务支持。IOC(控制反转)控制反转——Spring通过一种称作控制反转(IoC)技术增进了低耦合。当应用了IoC,一种对象依赖其他对象会通过被动方式传递进来,而不是这个对象自己创立或者查找依赖对象。你可以以为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象祈求就积极将依赖传递给它。普通都是调用者依赖被调用者,使用ioc后对象不会被直接调用,而是通过ioc容器来积极提供容器——Spring包括并管理应用对象配备和生命周期,在这个意义上它是一种容器,你可以配备你每个bean如何被创立——基于一种可配备原型(prototype),你bean可以创立一种单独实例或者每次需要时都生成一种新实例——以及它们是如何互有关联。然而,Spring不应当被混同于老式重量级EJB容器,它们经常是庞大与笨重,难以使用。框架——Spring可以将简朴组件配备、组合成为复杂应用。在Spring中,应用对象被声明式地组合,典型地是在一种XML文献里。Spring也提供了诸多基本功能(事务管理、持久化框架集成等等),将应用逻辑开发留给了你。MVC——Spring作用是整合,但不但仅限于整合,Spring框架可以被看做是一种公司解决方案级别框架。客户端发送祈求,服务器控制器(由DispatcherServlet实现)完毕祈求转发,控制器调用一种用于映射类HandlerMapping,该类用于将祈求映射到相应解决器来解决祈求。HandlerMapping将祈求映射到相应解决器Controller(相称于Action)在Spring当中如果写某些解决器组件,普通实现Controller接口,在Controller中就可以调用某些Service或DAO来进行数据操作ModelAndView用于存储从DAO中取出数据,还可以存储响应视图某些数据。如果想将解决成果返回给顾客,那么在Spring框架中还提供一种视图组件ViewResolver,该组件依照Controller返回标示,找到相应视图,将响应response返回给顾客Aop是面向对象开发一种补充,可以在不变化本来业务逻辑基本上动态增长某些功能,例如增长例子异常解决AOP

面向切面编程。解耦是程序员编码开发过程中始终追求。AOP也是为理解耦所诞生。AOP在Spring框架中被作为核心构成某些之一,最常用就是事务控制,日记记录OOP(面向对象编程)针对业务解决过程实体及其属性和行为进行抽象封装,以获得更加清晰高效逻辑单元划分。而AOP则是针对业务解决过程中切面进行提取,它所面对是解决过程中某个环节或阶段,以获得逻辑过程中各某些之间低耦合性隔离效果。这两种设计思想在目的上有着本质差别。特点/长处特点1.以便解耦,简化开发通过Spring提供IoC容器,我们可以将对象之间依赖关系交由Spring进行控制,避免硬编码所导致过度程序耦合。有了Spring,顾客不必再为单实例模式类、属性文献解析等这些很底层需求编写代码,可以更专注于上层应用。2.AOP编程支持通过Spring提供AOP功能,以便进行面向切面编程,许多不容易用老式OOP实现功能可以通过AOP轻松应付。3.声明式事务支持在Spring中,我们可以从单调烦闷事务管理代码中解脱出来,通过声明式方式灵活地进行事务管理,提高开发效率和质量。长处1.低侵入式设计,代码污染极低2.独立于各种应用服务器,基于Spring框架应用,可以真正实现WriteOnce,RunAnywhere承诺3.SpringDI机制减少了业务对象替代复杂性,提高了组件之间解耦4.SpringAOP支持容许将某些通用任务如安全、事务、日记等进行集中式管理,从而提供了更好复用5.SpringORM和DAO提供了与第三方持久层框架良好整合,并简化了底层数据库访问6.Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架某些或所有实现不同类型参数注入1.注入直接量可以通过<value>标签进行注入2.引入其她bean组件使用标签<ref>属性普通用bean3.注入集合类型属性<list><set><map><properties>详细配备详见参数Bean作用域Singletton默认值:Spring以单例模式创立bean实例,即容器中该bean实例只有一种Prototype:每次从容器中获取bean时都会创立一种实例Request:用于web应用环境,针对每次http祈求都会创立一种实例Session:用于web环境,同一种会话共享一种实例,Bean注入方式属性注入构造办法注入在Spring配备文献中实现自动装配<bean>元素autowire属性提供了一种自动注入依赖对象机制,配备bean时不需要做任何显式地指定,Spring会自动查找符合条件依赖对象并实行注入提供了四种自动装配类型No:默认值,Spring默认不进行自动装配,必要显式指定依赖关系ByName:依照属性名自动装配,会查找与属性名相似id,Bytype依照属性类型积极装配Constructor和bytype类似,但是它针对构造办法,如果Spring找到一种bean和构造办法参数类型相匹配,则通过构造办法注入该依赖对象,找不到抛出异常Spring惯用注解

注解阐明•

注册注解解决器•

方式一:bean<beanclass="org.springframework.beans.factory.annotation.

AutowiredAnnotationBeanPostProcessor"/>•

方式二:

命名空间<context:annotation-config/><context:annotationconfig/>

将隐式地向Spring

容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor

PersistenceAnnotationBeanPostProcessor

以及RequiredAnnotationBeanPostProcessor

这4

个BeanPostProcessor

。•

方式三:

命名空间<context:component-scan/>如果要使注解工作,则必要配备component-scan

,事实上不需要再配备annotation-config。base-package

属性指定了需要扫描类包,类包及其递归子包中所有类都会被解决。还容许定义过滤器将基包下某些类纳入或排除。

启用SpringMVC

注解•

启动SpringMVC

注解功能,完毕祈求和注解POJO

映射.<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

注解简介

@Controller

@Service

@Autowired

@RequestMapping

@RequestParam

@ModelAttribute

@Resource

@Repository

@Component

(不推荐使用)

@Scope

@SessionAttributes

@InitBinder

@Required

@Qualifier

1.@Controller

例如

@Controller

publicclassSoftCreateControllerextendsSimpleBaseController{}

或者

@Controller("softCreateController")

阐明

@Controller

负责注册一种bean

到spring

上下文中,bean

ID

默以为类名称开头字母小写

2.@Service

例如

@Service

publicclassSoftCreateServiceImplimplementsISoftCreateService{}

或者

@Service("softCreateServiceImpl")

阐明

@Service

负责注册一种bean

到spring

上下文中,bean

ID

默以为类名称开头字母小写

3.@Autowired

例如

@Autowired

privateISoftPMServicesoftPMService;

或者

@Autowired(required=false)

privateISoftPMServicesoftPMService=newSoftPMServiceImpl();

阐明

@Autowired

依照bean

类型从spring

上线文中进行查找,注册类型必要唯一,否则报异常。与@Resource

区别在于,@Resource

容许通过bean

名称或bean

类型两种方式进行查找@Autowired(required=false)

表达,如果spring

上下文中没有找到该类型bean

时,才会使用newSoftPMServiceImpl();@Autowired标注作用于Map类型时,如果Mapkey为String类型,则Spring会将容器中所有类型符合Mapvalue相应类型Bean增长进来,用Beanid或name作为Mapkey。@Autowired尚有一种作用就是,如果将其标注在BeanFactory类型、ApplicationContext类型、ResourceLoader类型、ApplicationEventPublisher类型、MessageSource类型上,那么Spring会自动注入这些实现类实例,不需要额外操作。

4.@RequestMapping•

类@Controller

@RequestMapping("/bbtForum.do")publicclassBbtForumController{

@RequestMapping(params="method=listBoardTopic")publicStringlistBoardTopic(inttopicId,Useruser){}

}

办法

@RequestMapping("/softpg/downSoftPg.do")

@RequestMapping(value="/softpg/ajaxLoadSoftId.do",method=POST)

@RequestMapping(value="/osu/product/detail.do",params={"modify=false"},method=POST)

阐明

@RequestMapping

可以声明到类或办法上

参数绑定阐明

如果我们使用如下

URL

祈求:http://localhost/bbtForum.do?method=listBoardTopic&topicId=1&userId=10&userName=tomtopicIdURL

参数将绑定到

topicId

入参上,而

userId

userNameURL

参数将绑定到

user

对象

userId

userName

属性中。和

URL

祈求中不容许没有

topicId

参数不同,虽然

User

userId

属性类型是基本数据类型,但如果

URL

中不存在

userId

参数,Spring

也不会报错,此时

user.userId

值为

0

。如果

User

对象拥有一种

dept.deptId

级联属性,那么它将和

dept.deptIdURL

参数绑定。

5.@RequestParam•

参数绑定阐明

@RequestParam("id")http://localhost/bbtForum.do?method=listBoardTopic&id=1&userId=10&userName=tomlistBoardTopic(@RequestParam("id")inttopicId,Useruser)

topicId

绑定到

id

这个

URL

参数,那么可以通过对入参使用

@RequestParam

注解来达到目

@RequestParam(required=false):参数不是必要,默以为true@RequestParam(value="id",required=false)

祈求解决办法入参可选类型

Java

基本数据类型和

String

默认状况下将按名称匹配方式绑定到

URL

参数上,可以通过

@RequestParam

注解变化默认绑定规则

request/response/session

既可以是

ServletAPI

也可以是

PortletAPI

相应对象,Spring

会将它们绑定到Servlet

Portlet

容器相应对象上

org.springframework.web.context.request.WebRequest

内部包括了

request

对象

java.util.Locale绑定到

request

相应

Locale

对象上

java.io.InputStream/java.io.Reader

可以借此访问

request

内容

java.io.OutputStream/java.io.Writer可以借此操作

response

内容

任何标注了

@RequestParam

注解入参

被标注

@RequestParam

注解入参将绑定到特定

request

参数上。

java.util.Map/org.springframework.ui.ModelMap它绑定

SpringMVC

框架中每个祈求所创立潜在模型对象,它们可以被

Web

视图对象访问(如

JSP

)

命令/

表单对象(注:普通称绑定使用

HTTPGET

发送

URL

参数对象为命令对象,而称绑定使用HTTPPOST

发送

URL

参数对象为表单对象)

它们属性将以名称匹配规则绑定到

URL

参数上,同步完毕类型转换。

而类型转换规则可以通过

@InitBinder

注解或通过

HandlerAdapter

配备进行调

org.springframework.validation.Errors/org.springframework.validation.BindingResult

为属性列表中命令/

表单对象校验成果,注意检查成果参数必要紧跟在命令/

表单对象背面

org.springframework.web.bind.support.SessionStatus

可以通过该类型

status

对象显式结束表单解决,这相称于触发

session

清除其中通过@SessionAttributes

定义属性

祈求解决办法返回值可选类型•

void此时逻辑视图名由祈求解决办法相应

URL

拟定,如如下办法:

@RequestMapping("/welcome.do")

publicvoidwelcomeHandler(){}

相应逻辑视图名为

welcome

String此时逻辑视图名为返回字符,如如下办法:

@RequestMapping(method=RequestMethod.GET)

publicStringsetupForm(@RequestParam("ownerId")intownerId,ModelMapmodel){Ownerowner=this.clinic.loadOwner(ownerId);

model.addAttribute(owner);

return"ownerForm";}

相应逻辑视图名为

ownerForm

org.springframework.ui.ModelMap和返回类型为

void

同样,逻辑视图名取决于相应祈求

URL

,如下面例子:

@RequestMapping("/vets.do")

publicModelMapvetsHandler(){returnnewModelMap(this.clinic.getVets());}相应逻辑视图名为

vets

,返回

ModelMap

将被作为祈求相应模型对象,可以在

JSP

视图页面中访问到。

ModelAndView

固然还可以是老式

ModelAndView

@ModelAttribute

作用域:request

例如

@RequestMapping("/base/userManageCooper/init.do")

publicStringhandleInit(@ModelAttribute("queryBean")ManagedUsersUser,Modelmodel,){

或者

@ModelAttribute("coopMap")//

将coopMap

返回到页

publicMap<Long,CooperatorInfo>coopMapItems(){}

阐明

@ModelAttribute

声明在属性上,表达该属性value

来源于model

里"queryBean"

,并被保存到model

里@ModelAttribute声明在办法上,表达该办法返回值被保存到model

@Resource

例如

@Resource

privateDataSourcedataSource;//injectthebeannamed'dataSource'

或者

@Resource(name="dataSource")

@Resource(type=DataSource.class)

阐明@Resource

默认按bean

name

进行查找,如果没有找到会按type

进行查找,

此时与@Autowired

似在没有为@Resource注解显式指定name属性前提下,如果将其标注在BeanFactory类型、ApplicationContext类型、ResourceLoader类型、ApplicationEventPublisher类型、MessageSource类型上,那么Spring会自动注入这些实现类实例,不需要额外操作。此时name属性不需要指定(或者指定为""),否则注入失败;

@Repository•

与@Controller

、@Service

类似,都是向spring

上下文中注册bean

,不在赘述。

@Component

(不推荐使用)•

@Component@Component

是所有受Spring

管理组件通用形式,Spring

还提供了更加细化注解形式:

@Repository

、@Service、@Controller

,它们分别相应存储层Bean

,业务层Bean

,和展示层Bean

。当前版本(2.5

)中,这些注解与@Component

语义是同样,完全通用,

在Spring

后来版本中也许会给它们追加更多语义。

因此,我们推荐使用@Repository

、@Service

、@Controller

来代替@Component

@Scope

例如

@Scope("session")

@Repository()

publicclassUserSessionBeanimplementsSerializable{}

阐明

在使用XML

定义Bean

时,可以通过bean

scope

属性来定义一种Bean

作用范畴,

同样可以通过@Scope

注解来完毕

@Scope中可以指定如下值:

singleton:定义bean范畴为每个spring容器一种实例(默认值)

prototype:定义bean可以被多次实例化(使用一次就创立一次)

request:定义bean范畴是http祈求(springMVC中有效)

session:定义bean范畴是http会话(springMVC中有效)

global-session:定义bean范畴是全局http会话(portlet中有效)

@SessionAttributes•

阐明Spring

容许我们有选取地指定

ModelMap

中哪些属性需要转存到

session

中,

以便下一种祈求属相应

ModelMap

属性列表中还能访问到这些属性。

这一功能是通过类定义处标注

@SessionAttributes

注解来实现。

@SessionAttributes

只能声明在类上,而不能声明在办法上。

例如@SessionAttributes("currUser")//

将ModelMap

中属性名为currUser

属性

@SessionAttributes({"attr1","attr2"})

@SessionAttributes(types=User.class)

@SessionAttributes(types={User.class,Dept.class})

@SessionAttributes(types={User.class,Dept.class},value={"attr1","attr2"})@InitBinder•

阐明如果但愿某个属性编辑器仅作用于特定

Controller

,

可以在

Controller

中定义一种标注

@InitBinder

注解办法,

可以在该办法中向

Controller

了注册若干个属性编辑器

例如@InitBinder

publicvoidinitBinder(WebDataBinderbinder){SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");

dateFormat.setLenient(false);

binder.registerCustomEditor(Date.class,newCustomDateEditor(dateFormat,false));}

@Required

例如

@required

public

setName(Stringname){}

阐明

@

required

负责检查一种bean在初始化时其声明

set办法与否被执行,

当某个被标注了@RequiredSetter办法没有被调用,则Spring在解析时候会抛出异常,以提示开发者对相应属性进行设立。@Required注解只能标注在Setter办法之上。由于依赖注入本质是检查Setter办法与否被调用了,而不是真去检查属性与否赋值了以及赋了什么样值。如果将该注解标注在非setXxxx()类型办法则被忽视。

@Qualifier

例如

@Autowired

@Qualifier("softService")

privateISoftPMServicesoftPMService;

阐明

使用@Autowired

时,如果找到各种同一类型bean,则会抛异常,此时可以使用

@Qualifier("beanName"),明确指定bean名称进行注入,此时与

@Resource指定name属性作用相似。SSH框架整合知识点环节添加3个框架jar文献,并创立有关配备文献为Hibernate配备数据源对象配备sessionfactory对象实现并配备Dao和service使用Spring简化数据库事务解决,及配备声明式事务管理实现并配备Action2-5部操作属于Spring整合hibernate,环节6属于Spring整合Struts21.在Spring容器中配备c3po数据源当前流行数据源框架有dbcpc3po,当前惯用是c3po需要导入包c3po-.jar在web容器中配备数据源2.配备sessionfactory对象Annotationsessionfactorybean是sessionfactory实现类,它同步支持hibernate中XML和annotation映射配备,mappingResources属性用来指定XML映射文献,如果在开发中配备\\持久化类配备问价非常多时候,可以在mappingLocations属性中使用通配符来匹配各种映射文献3实现并配备Dao和service实现Dao在众多dao中抽取公共代码形成basedao,dao集成basedao,由于basedao接口实现被不同dao继承,因此basedao被声明形成了泛型接口,其中类型T可以在继承时再去拟定,这样就可以让basedao实现各种表持久化功能,核心代码PrivateClass<T>enti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论