spring
spring mvc接受参数的几种类型及应用场景?
mvc接受参数的几种类型及应用场景?
类型有:
1、表单参数
非对象类型单个参数接收:
这种是最常用的表单参数提交,ContentType指定为application/x-www-form-urlencoded,也就是会进行URL编码。
2、JSON参数
一般来说,直接POST一个JSON字符串这种方式对于SpringMVC来说是比较友好的,只需要把ContentType设置为application/json,提交一个原始的JSON字符串即可
3、URL参数
URL参数,或者叫请求路径参数是基于URL模板获取到的参数,例如/user/{userId}是一个URL模板(URL模板中的参数占位符是{}),实际请求的URL为/user/1,那么通过匹配实际请求的URL和URL模板就能提取到userId为1
如何修改request参数值并应用到springMvc中?
实现HandlerInterceptor接口,prehandle方法中可以拦截参数,修改请求参数。
spring获取bean方法的参数?
获取bean方法的参数:
一、通过Spring提供的ContextLoader
二、ApplicationContextAware
怎样用配置文件连接数据库?
直接在spring的配置文件中applicationContext.xml文件中配置数据库连接也可以,但是有个问题,需要在url后带着使用编码集和指定编码集,出现了如下问题,amp这个符号报错。;
既然这样只能使用外部配置文件设置一些参数,在spring的配置文件applicationContext.xml中获取,然后配置连接数据库。;
使用properties配置文件连接数据库,在src下新建文件,按照自己的数据库名,用户名密码更改下面的配置。
;
在spring的配置文件applicatiContext.xml中加入(这里是引入配置文件),更改之前的数据库配置,名称和配置文件中的对应上即可。
springboot怎么注入@configuration类?
springboot核心注解@EnableAutoConfiguration会导入@Import(),这个类实现了DeferredImportSelector接口,即可以达到spring完成bean的初始化之后会回调该接口的selectImports方法,方法的参数是各个bean的类属性,注解等,返回的bean才会导入到spring中。AutoConfigurationImportSelector实现逻辑如下:
该方法逻辑大致就是加载各个jar包下的spring.factories配置文件,读取出自动配置的类,然后去掉重复的以及需要排除的,然后进行过滤,即filter方法,该方法如下:
重点看第一个for循环,getAutoConfigurationImportFilters()会返回所有AutoConfigurationImportFilter的实现类,目前只有OnClassCondition这个类实现了该接口,即返回的都是OnClassCondition类的对象,而OnClassCondition继承自SpringBootCondition,match会根据条件过滤掉不符合条件的配置类,留下符合条件的配置类,从而被AutoConfigurationImportSelector注入spring完成加载。这里说一下match方法是如何处理ConditionOnClass注解的,看实现,其中的getOutcomes方法实现,其中使用createOutcomesResolver方法创建了2个OutcomesResolver,需要注意的是,留下了一半的解析任务放在新开线程中实现以获得更好的性能,这里主要看StandardOutcomesResolver的实现,对应的实现方法:
可以看到读取了类上面的ConditionalOnClass注解的值,然后和环境中进行匹配,如果存在就返回ConditionOutcome对象,存在返回空。经过这些过滤,最终由上面说的AutoConfigurationImportSelector类返回后被spring加载从而实现了条件注解的配置功能。
另外@configuration类会在ConfigurationClassPostProcessor中进行处理,一些其他类型的@Condition条件判断等,如OnJavaCondition注解等,会在这里处理,这里不再赘述。