总结1: SCI:Servlet容器(Tomcat)提供的初始化Servlet容器本身的接口,可替换web.xml SpringSCI:SpringServletContainerInitializer,Srping提供的SCI的一个实现,起到中转桥接作用,桥接到 WebApplicationInitializer 接口上 WebApplicationInitializer :可以自定义配置servlet.listener,进而可以通过代码手动控制两个上下文的创建过程(参考:基于xml    …
package com.dxz.demo.configuration; import org.springframework.context.annotation.Configuration; @Configuration public class TestConfiguration { public TestConfiguration() { System.out.println("TestConfiguration容器启动初始化..."); } } APP 方法1 package…
目录结构 AppInitializer.java package com.jt; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{ @Override protecte…
传统web.xm中配置两个上下文+两个context对应的xml+两个上下文bean分别手动配置 传统web.xm中配置两个上下文+两个context对应的xml+<mvc:annotation-driven />+ComponentScan 基于Servlet容器的SCI,继承AbstractAnnotationConfigDispatcherServletInitializer  或  WebApplicationInitializer 基于javaconfig+@EnableWebMvc…
除了使用xml,spring提供javaconfig配置,下面是简单的例子: 1.声明接口 /** * */ package com.junge.demo.spring.service; /** * 表演 * @author Administrator * */ public interface IPerface { void play(); } 2.添加实现类 /** * */ package com.junge.demo.spring.service.impl; import org.spr…
在使用JavaConfig时,AbstractAnnotationConfigDispatcherServletInitializer会自动注册 DispatcherServlet 和 ContextLoaderListener ContextLoaderListener使用全局参数“contextConfigLocation”指定的xml文件完成加载 DispatcherServet会根据Servlet的名字找到一个文件,并基于该文件加载应用上下文.若特殊命名,可使用局部参数“contextC…
抄自: http://www.techweb.com.cn/network/system/2016-01-05/2252188.shtml @RestController spring4为了更方便的支持restfull应用的开发,新增了RestController的注解,比Controller注解多的功能就是给底下的RequestMapping方法默认都加上ResponseBody注解,省得自己再去每个去添加该注解. @Configuration 这个标注该类是spring的配置类,本身自带Co…
序 传统spring一般都是基于xml配置的,不过后来新增了许多JavaConfig的注解.特别是springboot,基本都是清一色的java config,不了解一下,还真是不适应.这里备注一下. @RestController spring4为了更方便的支持restfull应用的开发,新增了RestController的注解,比Controller注解多的功能就是给底下的RequestMapping方法默认都加上ResponseBody注解,省得自己再去每个去添加该注解. @Configu…
1 JavaConfig  配置方法 之前我们都是在xml文件中定义bean的,比如: 1 2 3 4 5 6 7 8 <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.springframework…
1. Spring MVC的核心就是DispatcherServlet类,Spring MVC处理请求的流程如下图所示: 2. Spring MVC中典型的上下文层次 当我们初始化一个DispatcherServlet类时,Spring MVC会在web应用的WEB-INF目录下查找一个名字叫:[servlet-name]-servlet.xml的配置文件,查询这个文件中定义的bean并初始化.[servlet-name]-servlet.xml的定义的bean初始化时将会覆盖在全局范围内(gl…
在spring3.0中增加配置spring beans的新方式JavaConfig,可以替换spring的applicataion.xml配置.也即@Configuration对等<beans/>,@Bean对等<bean/>,关于@Configuration见<spring4.0之二:@Configuration的使用>. The following are the list of annotations introduced as part of the JavaC…
从Spring3開始,增加了JavaConfig特性.JavaConfig特性同意开发人员不必在Spring的xml配置文件里定义bean,能够在Java Class中通过凝视配置bean,假设你讨厌XML,那么这样的特性肯定是让你感到愉悦的. 当然,你仍然能够用经典的XML方法定义bean.JavaConfig仅仅是还有一个替代方案. 1) 编辑pom.xml引入依赖包CGLIB 在建立一个project后,编辑pom.xml文件要想使用JavaConfig特性.必须引入CGLIB包,引入后,…
1       bean配置与装配 1.1      bean在XML文件中进行显示配置并装配 1.2      bean在JavaConfig中显示配置并装配 1.2.1  优点:类型是安全的,编译期可检查.(相对于xml配置而言,编辑时不能校验) 1.2.2  通过java代码创建bean:略,使用@bean注解 1.2.3  通过java代码装配bean:略 1.3      bean自动扫描和自动装配 1.3.1  自动组件扫描(component scanning) 1.3.1.1 组…
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的.一开始,Spring用XML配置,而且是很多XML配置.Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置.Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML Spring自带多个容器,分为两类 bean工厂:太低级,不细说 应用上下文:全权负责对象的创建和组装,自带多个应用上下文,区别仅仅在于如何加载配置配置 AnnotationConfigAp…
1.认识JavaConfig JavaConfig是Spring的一个子项目,在Spring4之后成为一个核心功能 JavaConfig中使用的注解: @Configuration 在类上打上这一标签,表示这个类是配置类 @ComponentScan 相当于xml的 <context:componentscan basepakage=""/> @Import(MyConfig2.class) 导入其他的配置类,合并配置信息,相当于xml中的 <import resou…
1.在xml中需要配置自动代理 /** * */ package com.junge.demo.spring.dao; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy…
spring mvc中的Interceptor可以理解为是Spring MVC框架对AOP的一种实现方式.一般简单的功能又是通用的,每个请求都要去处理的,比如判断token是否失效可以使用spring mvc的HanlderInterceptor, 复杂的,比如缓存,需要高度自定义的就用spring aop.一般来说service层更多用spring aop,controller层有必要用到request和response的时候,可以用拦截器. servlet filter和spring mvc…
前言 项目中我们经常需要对RESTful api进行拦截,主流实现方法有filter.interceptor.aop,先说一下他们各自的实现. Filter AnimalFilter实现javax.servlet.Filter,项目启动时已初始化完成,可在控制台看到打印的初始化日志. @Component    public class AnimalFilter implements Filter {             private Logger logger = LoggerFacto…
实际案例json <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <m…
ContentNegotiatingViewResolver,这个视图解析器允许你用同样的内容数据来呈现不同的view.它支持如下面描述的三种方式: 1)使用扩展名http://localhost:8080/employees/nego/Jack.xml  返回结果为XMLhttp://localhost:8080/employees/nego/Jack.json 返回结果为JSONhttp://localhost:8080/employees/nego/Jack  使用默认view呈现,比如J…
View View接口表示一个响应给用户的视图,例如jsp文件,pdf文件,html文件等 该接口只有两个方法定义,分别表明该视图的ContentType和如何被渲染 Spring中提供了丰富的视图支持 ViewResolver ViewResolver接口定义了如何通过view 名称来解析对应View实例的行为,即:如何把控制器返回的“视图名 字符串” 解析为View实例,并渲染为HTML.PDF后推向浏览器 同样Spring提供了丰富的ViewResolver实现用来解析不同的View 创建…
使用@Component注解,表示该类定义为Spring管理Bean,使用默认value(可选)属性表示Bean标识符.如果不指定标识符,默认为首字母小写类名.例如类UserController的标识符为userController…
Autowired @Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property.当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留. 这里@Autowired注解的意思就是,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去. @Autowired(required = false) public class…
Spring  AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect)   1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下让你不知所措,心想着:管不得很多人都和我说AOP多难多难.当我看进去以后,我才行发现:他就是一些Java基础上的朴实无华的应用,包括IOC(见<Spring IOC(依赖注入.控制反转)概念理解>),包括许许多多这样的名词,都是万变不离其宗而已.   2.为什么要用A…
针对接口编程 DAO是指数据访问对象(data access object),它提供了数据读取和写入到数据库中的一种方式.Spring认为,它应该以接口的方式发布功能,而应用程序的其他部分需要通过接口的形式进行访问. 统一异常体系 为了实现数据访问层与应用程序的的其他部分的解耦,Spring采用的一个方式就是提供贯穿整个DAO框剪的统一异常体系. JDBC中的SQLException,它表示尝试访问数据库时出现异常,但是却无法做出相对应的处理,太模糊了 Hibernate提供了20个左右的异常,…
JdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTemplate位于中.其全限定命名为org.springframework.jdbc.core.JdbcTemplate.要使用JdbcTemlate还需一个这个包包含了一下事务和异常控制 JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句:…
使用<context:property-placeholder>标签导入多个properties文件 2017年12月20日 10:10:36 sf_climber 阅读数:5830更多 个人分类: javaEE   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sf_climber/article/details/78850038 在Spring中的xml中使用<context:property-placeholderlocation…
Spring MVC Flash Attribute 的讲解与使用示例 1. Spring MVC 3.1版本加了一个很有用的特性,Flash属性,它能解决一个长久以来缺少解决的问题,一个POST/Redirect/GET模式问题. 正常的MVC Web应用程序在每次提交都会POST数据到服务器.一个正常的Controller (被注解 @Controller标记)从请求获取数据和处理它 (保存或更新数据库).一旦操作成功,用户就会被带到(forward)一个操作成功的页面.传统上来说,这样的P…
Spring 提供了多种方式将异常转换为相应 Spring框架提供的通用异常,将异常转换为HTTP状态码 Spring默认会将自身抛出的异常自动映射到合适的状态码,如下是一些示例: 举个例子,当后端抛出如下异常(TypeMismatchException异常,往方法传参时,类型不匹配): org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to re…
Spring MVC 允许一下方式将客户端的数据传送到控制器的处理方法中 查询参数(Query Parameter) 表单参数(Form  Parameter) 路径变量(Path  Variable) 处理查询参数 不包含默认值 @Controller @RequestMapping(value="/FirstControl") public class HelloControl { @RequestMapping("requestParam") public S…