Spring基础总结文档格式.docx
《Spring基础总结文档格式.docx》由会员分享,可在线阅读,更多相关《Spring基础总结文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
MVC封装包提供了Web应用Model-view-Controller实现.
Spring流程:
由客户端发送请求,经过Spring前控制器,前控制器把请求发送给自定义控制器,进行处理请求数据,根据请求数据创建ModelAndView,然后根据请求响应模型或页面给主控制器,主控制器根据模型进行验证,控制响应模型响应给主控制器,主控制器响应给客户端.
SpringMVC:
Spring的MVC围绕DispatchServlet设计,dispatch的作用是将请求分发到不同的处理器.
1.清晰的角色划分:
控制器,验证器,表单对象,命令对象,模型对象,Servlet分发器,分发器映射,视图解析器.
2.强大而直接的配置:
框架类,应用程序类都使用javabean来配置.
3.可适配,非侵入:
simple型,command型,from型.
4.可重用的业务代码:
可以使用现有的对象作为表单或业务对象.
5.可定制绑定和验证.
6.可定制处理映射和页面决定.
7.灵活的模型转换.通过Map来达到视图技术的集成.
8.可定制本地化和主题解析:
支持JSTL,Spring(from,tags)等标签语言.
9.SpringBean的生命周期可以被限制在当前的HTTPRequest或者HTTP
Session。
准确的说,这并非SpringMVC框架本身特性,而应归属于SpingMVC使用的WebApplicationContext容器。
Spring中的特殊Bean:
1.Controller(控制器).
2.Headlermapping(处理器映射)
3.Viewresolvers(视图解析器)
4.Localresolver(本地化解析器)
5.Themeresolver(Web主题解析器)
6.Multipartfiledresolver(文件上传解析器)
7.HerdlerExceptionresolver(处理异常解析器)
Spring控制器:
1.Controller控制器.
2.抽象的控制类abstractConlltroller(实现handleRequestInternal(HttpServletRequest,HttpServletResponse)抽象方法)
3.多方法控制类MultiMethodController(可以自定义方法名)
4.表单控制器
5.命令控制器
6.向导型控制器.
Spring跳转方式:
●Redirect(丢失数据,重新提交表单路径)
●Forward(不丢失数据,执行当前路径)
Spring视图解析:
(这样保持应用程序的一致性视图页面)
<
!
--设置显示返回页面信息-->
<
beanid="
viewResolver"
class="
org.springframework.web.servlet.view.InternalResourceVi
ewResolver"
>
--设置文件前缀与后缀-->
propertyname="
prefx"
value="
/"
/>
suffix"
.jsp"
/bean>
Spring标签:
两大标签:
核心标签,from表单标签.
From表单标签:
内部暴露一个path,绑定对象模型,命令模型放pageContext中去.
Errors标签:
展现字段的错误,来自你关联控制器的验证器产生的错误途径.
用于错误消息验证的绑定等等.
Spring验证器:
有两种方式:
1.直接通过bindException绑定错误对象.
2.实现validator接口,通过IOC方式注入你要验证的Class在配置Controller文件是进行property进行关联.
beanname="
/person.do"
class="
com.lxit.spring.controller.PersonController"
<
formView"
/person.jsp"
successView"
/success.jsp"
commandName"
person"
commandClass"
value="
com.lxit.spring.validator.Person"
validator"
ref="
personValidator"
Spring的注解:
(通过DispatchServlet扫描映射方法,在Dispatch-servlet.xml加入组件配置)
--通过注解自动装配@Controller类,*号代表所有目录也包括子目录-->
context:
component-scanbase-package="
com.lxit.spring.*"
类注解:
@controller指定类控制器
方法注解:
@RequestMapping(“/index.do”)映射一个请求路径.
@SessionAttrubutes()存储会话的属性.
@RequestMapping(value="
/getSession.do"
)
publicStringgetSession(@ModelAttribute("
session"
)Useruser){
log.info("
=======获取登录用户@ModelAttribute如下:
=========="
);
用户名:
"
+user.getUsername());
密码:
+user.getPassword());
return"
;
}
@RequestParam()绑定地址栏传参方法和参数.
@RequestMapping(value="
/getRequestParam.do"
method=RequestMethod.GET)
publicStringgetRequestParam(
@RequestParam("
username"
)Stringusername,Modelmodel){
=======获取@RequestParam如下:
log.info("
+username);
model.addAttribute("
username);
@ModelAttribute当作为一个方法参数时@ModelAttribute用于映射一个模型属性到特定的注解的方法参数.
Spring-IOC-控制反转:
如何理解IOC:
“不要打电话给我,我会打给你”
IOC与DI(依赖注入)是同一种理念
org.springframework.beans及org.springframework.context包是SpringIOC容器的基础.
BeanFactory:
擅长处理bean的配置和初始化与装载.
如何配置bean:
helloBean1"
class="
com.lxit.spring.service.HelloBean"
--导入系统资源配置文件-->
星字符是通配符,两个**可以匹配应用程序下任何地方.
importresource="
applicationContext-*.xml"
/>
applicationContext-two.xml"
Bean的命名:
Bean可以有多个ID或者一个ID,但是ID是唯一的,id与name是等价的.
bean的别名配置:
aliasname="
helloBean"
alias="
hello"
ApplicationContext:
在bean的功能之上,添加了更多功能如AOP/事物处理.
1.应用上下文提供文本信息解析工具,包括国际化.
2.应用上下文提供了载入文件资源的通用方法,载入图片.
3.应用上下文可以注册为监听器的bean方法事件.
ApplicationContext有那些重要的子类:
1.ClasspathXMLApplicationContext:
:
从类路径中的XML文件载入上下文定义信息,把上下文定义文件当成类路径资源.也就是解析应用程序相对路径下的上下文XML.
2.FileSystemXMLApplicationContext:
与上面恰恰相反,解析绝对路径下面的XML文件.
3.XMLWebApplicaionContext:
从WEB系统中的XML文件载入信息.
Classpath*:
前缀:
是查找应用程序路径下的applicationContext.xml.
File:
是file前缀来指定加载的配置文件信息.
自动装配(autowire)协作者:
注意:
在spring2.5.6以后的本版中,不再需要指定autowire属性,因为BeanFactory会自动检查bean关联关系:
五种类型:
1.No.
2.Byname根据名字进行装配.
3.Bytype根据类型进行装配.
4.Constructor根据构造进行装配.
5.Autodetect根据bean类的自省机制来决定使用构造器还是类型进行方式,如果发现默认是构造器,那么将使用bytype方式.
Spring依赖注入:
四种方式:
1.接口注入方式:
-好处降低代码的耦合度,提高代码的可读性和操作性.
--配置接口注入Bean的实例,注入实例后调用初始化init方法-->
cbean"
com.lxit.spring.controller.ClassBean"
init-method="
init"
2.构造器注入方式:
-根据参数类型进行匹配,如果构造器参数类型定义明确,bean定义的参数顺序就是构造器参数顺序.<
配置信息如下>
有4种方式配置值
1.name属性2.type:
类型配置3.index下标指定4.ref引用配置bean
constructorbean1"
com.lxit.spring.controller.ConstructorBean"
--注入对象进行引用与构造器的参数进行对应也可以通过下-->
--<
constructor-argindex="
0"
constructor-argtype="
java.lang.String"
admin"
int"
100"
-->
<
constructor-argname="
hellobean"
name"
count"
1"
3.Setter设值注入:
-调用bean的set方法,即可实现基于setter的依赖注入.
3种配置方式:
1.配置当前上下文-local属性
2.配置应用程序的资源配置-bean
3.配置内部bean
setterbean1"
com.lxit.spring.controller.SetterBean"
local作用于当前上下文
reflocal="
/property>
setterbean2"
--作用于整个应用程序-->
refbean="
setterbean3"
配置内部bean方法<
beanclass="
com.lxit.spring.controller.HelloBean"
Spring-bean作用域:
五种作用域:
1.singleton-单实例,多分发处理.
2.prototype-多实例.每来一个实例实例化一次.
3.Requrst–请求一次实例一次.
4.Session–基于session
5.GlobalSession-全局session.
Spring-bean生命周期:
1.实例化bean.
2.依赖注入,设置bean属性.
3.实现了BeanNameAware,调用setBeanName,获取当前Bean的ID.
4.实现了BeanFactoryAware,调用setBeanFactory,获取当前上下文的bean对象.
5.初始化bean.实现了InitializingBean.
6.初始化自定义init方法.
7.处理当前bean前面的bean配置.postProcessBeforeInitializatio
8.处理当前bean之后的bean的配置.postProcessAfterInitializatio
9.调用系统的destroy()进行销毁.
10.调用自定义销毁方法.
Spring-集合注入:
4种集合:
1)List集合:
--配置集合对象-->
someList"
list>
<
value>
${system.name}<
/value>
object"
singleton"
/list>
2)Set集合:
--配置set对象-->
someSet"
set>
/set>
3)Props(资源文件):
config"
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
locations"
classpath:
resources.properties<
--设置键值lazy-init设置为ture当实例化的时候使用不然不进行加载-->
prosService"
com.lxit.spring.service.PropsService"
lazy-init="
true"
properties"
props>
propkey="
sid"
/prop>
admin<
123<
--资源文件进行控制开关-->
sys.log"
${sys.log}<
/props>
4)Map(键值对):
--配置map对象key字段必须指定Value属性-->
someMap"
map>
entry>
<
key>
<
username<
/key>
/entry>
entrykey="
你好世界!
/map>
集合的合并:
从2.0开始,SpringIoC容器将支持集合的合并。
这样我们可以定义parent-style和child-style的<
list/>
、<
map/>
set/>
property/>
或<
props/>
元素,子集合的值从其父集合继承和覆盖而来;
也就是说,父子集合元素合并后值就是子集合中的最终结果,而且子集合中的元素值将覆盖父配置中对应的值.
组合属性注入:
子类可以给父类的属性赋值(在子类中引入父类并生成get(),set()。
然后在bin的身体里面通过<
property>
来指定)
Spring-注解:
隐形加载方式:
1.AutowiredAnnotationBeanPostProcessor:
自动扫描注解处理类2.CommonAnnotationBeanPostProcessor:
组件注解处理类
3.PersistenceAnnotationBeanPostProcessor:
持久化注解处理类4.RequiredAnnotationBeanPostProcessor:
检查/验证注解处理类
属于java规范的注解有:
@Resource(相当于autowired)
@PostConstruct(指定自定义方法初始化)
@PerDestroy(指定自定义销毁方法)。
Spring注解:
@component组件做了最基本的事情,把类转为组件实例
组件可以实现通用的方法和共同的逻辑,注解是依赖于组件的
@Controller、@Service,@Repositroy分别对应了控制层、服务层、持久化层
@Scope可以用来指定singlethon、prototype、request、session、globalsession五大作用域
使用过滤器自定义扫描:
我们可以通过context-component-scan的include-filter和exinclude-filter来进行添加,每个过滤器都必须有<
type>
expression>
属性,我们用到的过滤器有regex、annotation等
@Autowired注解可以用于:
1.设值注解:
通过set方法注入
2.构造注解:
通过构造方法注入
3.多参数注解:
通过以属性为参数的方法
我们可以在@Autowired注解的括号里指定required=false,也就是你当前注入的实例存不存在都可以
@Autowired可以注入bean容器
@Qualifier注解:
可以帮我们指定注入的实例,这个注解也可以被指定为构造器的参数和方法的参数
Spring–AOP(面向切面编程):
AOP在formWork的作用:
1.提供声明式企业服务,为了替代EJB的声明式服务,最重要的服务是声明性事务管理.
2.允许用户实现自定义切面,用AOP来完善OOP使用.
AOP的组成与概念:
1.切面(aspect):
一