Spring Boot 2系列(附一):application properties自动配置属性官方汇总与XML配置引入
Spring Boot项目常用配置汇总,如引入XML
配置等。
使用XML配置:Spring Boot提倡零配置,即无XML配置,但一些特殊要求需要使用XML配置。
在配置类或入口类上添加如下注解。@ImportResource(value = {"classpath:some-context.xml","classpath:another-context.xml"})
Spring Boot项目常用配置汇总,如引入XML
配置等。
使用XML配置:Spring Boot提倡零配置,即无XML配置,但一些特殊要求需要使用XML配置。
在配置类或入口类上添加如下注解。@ImportResource(value = {"classpath:some-context.xml","classpath:another-context.xml"})
文件上传可以说是项目中最常用的功能。
Spring MVC 为文件上传提供了直接的支持,Spring MVC 提供了一个文件上传的解析类CommonsMultipartResolver
,即插即用(在XML文件装配下),该类依赖了Apache Commons FileUpload
技术,所以需要导入commons-fileupload.jar
和commons-io.jar
两个包。
上传文件,必须将表单的method
设置为post
,并将enctype
设置为multipart/form-data
,浏览器才会把文件二进制数据发给服务器。
拦截器是 Web 项目很重要和常用的功能,如对用户权限验证,判断用户是否已登录等。
SpringMVC 中的拦截器通过实现HanderInterceptor
接口来完成,或继承抽象类HandlerInterceptorAdapter
,重写里面的方法来完成。
文件下载大多使用输出流的方式来实现。而SpringMVC 提供了一个ResponseEntity
类型,可以很方便地定义返回的HttpHeaders
和HttpStatus
。
Spring 支持 AspectJ的注解式切面编程。AOP可以让一组类共享相同的行为。
声明一点:对于软件质量的保证,单元测试真的非常有必要,在CMMI-5标准也是对单元测试有明确要求的。
有的公司的对开发要求严谨的话,开发流程可能执行的是测试驱动开发(TDD
),即根据拿到需求,开发人员先写预期单元测试用例,再根据满足测试用例的要求来开发业务代码。
在不启动项目的情况下,对Spring Web项目,需要一些Servlet
相关的模拟对象,比如:MockMvc,MockHttpSession,MockHttpServletRequest,MockHttpServletResponse
等,还需要WebAppConfiguration
。
声明一点:对于软件质量的保证,单元测试真的非常有必要,在CMMI-5标准也是对单元测试有明确要求的。
有的公司的对开发要求严谨的话,开发流程可能执行的是测试驱动开发(TDD
),即根据拿到需求,开发人员先写预期单元测试用例,再根据满足测试用例的要求来开发业务代码。
在不启动项目的情况下,对Spring Web项目,需要一些Servlet
相关的模拟对象,比如:MockMvc,MockHttpSession,MockHttpServletRequest,MockHttpServletResponse
等,还需要WebAppConfiguration
。
文件上传统一处理工具类。
Spring MVC 提供了MultipartFile
类来接收文件对象。
问题描述:
jsp
文件放在src/main/resources/jsp/
目录,Maven
配置的是Tomcat7
服务器插件,通过Maven build
运行后,访问该项目,浏览器报404
错误,但 SpringMVC没有报错,打印显示的映射路径和转发到的物理视图都无异常。 war
包布署到Tomcat7 和 8
服务器上运行,浏览器或以正常访问到src/main/resources/jsp/
目录下的jsp
文件。jsp
移到webapp/WEB-INF/jsp/
目录下,修改视图的物理路径的前辍到该目录,使用Maven build
运行,浏览器访问正常。因素排除:
此问题还未找到具体原因,未能解决
报错:访问Maven
管理的SpringMVC
项目jsp
页面,错误:at org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspInit(index_jsp.java:31)
原因:是项目的servlet-api
或jsp-api
两个jar
包与Tomcat
自带的包冲突导致。
解决:在pom.xml
文件,将这两个jar
包添加<scope>provided</scope>
控制,只在编译和测试有效。