1.Spring中的占位符

    在spring配置数据源的时候,我们经常需要读取xx.propretie文件中的信息,然后在spring的数据元配置文件中以占位符的方式来引入数据源配置属性的值。
    如果需要在spring的配置中以占位符方式来配置,请参考以下三种方式:

    1.PropertyPlaceholderConfigurer

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
    	<list>   
    	   <value>xx.properties</value>   
    	</list>  
      </property>  
    </bean>
    

    2.PropertyPlaceholderConfigurer

     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    
       <property name="location">   
    		<value>xx.properties</value>  
       </property>  
    </bean>	 
    

    3.context:property-placeholder标签

    <context:property-placeholder location="classpath:xx.properties"/>
    

    第一种方法一次可以读取多个配置文件,第二种和第三种只能读一个配置文件。

    2.Spring dispatcherservlet的作用

    首先DispatcherServlet会被配置在web.xml里边,是前端控制器设计模式的实现,所有的请求首先通过这个控制器进行职责的分配,而且与Spring IoC容器无缝集成

    <servlet>
    	<servlet-name>dispatcherServletservlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class</servlet-class>
    		<init-param>
    			  <param-name>contextConfigLocation</param-name>
    			  <param-value>classpath*:/spring/spring-mvc*.xml</param-value>
    		</init-param>
    </servlet>
    <servlet-mapping>
    	<servlet-name>dispatcherServletservlet</servlet-name>
    	<url-pattern>/</url-pattern>
    </servlet-mapping>	
    

    主要用作职责调度工作,本身主要用于控制流程,主要职责如下:

    1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
    2、通过HandlerMapping,将请求映射到处理器;
    3、通过HandlerAdapter支持多种类型的处理器;
    4、通过ViewResolver解析逻辑视图名到具体视图实现;
    5、本地化解析;
    6、渲染具体的视图等;
    7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

    3.如何保证接口的安全性

    请求是否合法:常见使用基于Token的身份验证,优点是无状态,可以被拓展,并且可以解决跨域问题等等。
    数据的校验:可以通过添加访问白名单或者Spring validator等方式来进行数据校验,防止异常数据或注入攻击等等。
    数据加密:利用常见的加密算法如MD5、Base64、AES等等算法对url进行加密。
    接口返回值的处理:封装固定的返回信息类,避免泄露错误信息。
    接口访问频率:通过设置接口访问频率的限制,避免高频率的非法接口访问。

    4.Spring boot与Spring mvc的区别

    首先基于Spring的衍生产品非常多,比如Spring mvc、Spring boot等等。核心基础都是Spring的ioc和aop原理。ioc提供了依赖注入的容器,aop解决了面向切面的编程,然后在此两者的的基础上实现了其他延伸产品的高级功能。Spring MVC是基于 Servlet的一个MVC框架主要解决WEB开发的问题,因为Spring的配置非常复杂,各种XML、 JavaConfig、hin处理起来比较繁琐。于是为了简化开发者的使用,从而创造性地推出了Spring boot,约定优于配置,简化了Spring的配置流程。

    说得更简便一些:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个MVC框架(一些用Spring 解耦的组件),用开发web应用( SpringMVC )。然后有发现每次开发都写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。

    Spring MVC的功能:
    Spring MVC提供了一种轻度耦合的方式来开发web应用。
    Spring MVC是Spring的一个模块,是一个web框架。通过Dispatcher Servlet, ModelAndView和View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发URL路由、Session、模板引擎、静态Web资源等等。

    Spring Boot的功能:
    Spring Boot实现了自动配置,降低了项目搭建的复杂度。
    众所周知Spring框架需要进行大量的配置,Spring Boot引入自动配置的概念,让项目设置变得很容易。Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

    Spring Boot只是承载者,辅助你简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和你上面描述的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。
    对使用者来说,换用Spring Boot以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。
    所以,用最简练的语言概括就是:
    Spring 是一个“引擎”;
    Spring MVC 是基于Spring的一个 MVC 框架 ;
    Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。