Spring
文章平均质量分 51
库昊天
这个作者很懒,什么都没留下…
展开
-
FactoryBean与动态代理结合
FactoryBean 与普通Bean区别: FactoryBean返回的对象不是其实现类的一个实例,而是getObject()方法所返回的对象。 作用: bean的配置统一, 控制getObject()的逻辑返回不同的bean;与动态代理结合 场景: RPC调用时,消费者需要向调用本地服务一样调用远程服务,这就需要对消费者进行代理,将远程服务调用过程封装,使得调用方不感知。代码示例/**原创 2017-11-07 19:28:00 · 1496 阅读 · 0 评论 -
SpringMVC@NotEmpty等注解不生效
现象 表单数据对应的Java Bean属性上添加的诸多校验注解不生效,如下示例:@NotEmpty(message = "规则不能为空", groups = {AppConfigGroup.Add.class,AppConfigGroup.Update.class})@Size(max = 200,groups= {AppConfigGroup.Add.class,AppConfigGro...原创 2018-12-09 12:51:01 · 20151 阅读 · 0 评论 -
destroy方法与钩子函数
结论 JVM关闭时,会触发钩子函数,Spring会在注册的钩子函数中回调bean的destroy方法销毁bean;注册过程 注册时机:Spring容器启动时,run() --> refreshContext(),如下图所示注册逻辑如下,AbstractApplicationContext.registerShutdownHook()public void registerShu...原创 2018-11-29 23:38:47 · 2347 阅读 · 0 评论 -
@Autowired注解使用及原理
使用说明数组或集合的注入 Spring容器中所有了类型匹配的bean都被注入进来,并且如果bean有@Order注解或者实现Order接口,按照Order的先后顺序注入;Map的注入key的类型必须为String,注入后值为bean的名称;value类型即为想要注入的bean类,所有类型匹配的bean会被注入进来;In case of a {@link java.util.Co...原创 2018-11-28 22:49:02 · 113636 阅读 · 5 评论 -
Spring注解驱动
XML配置文件的替代@Configuration作用: 相当于XML文件的beans标签;使用范围: 类@Configuration can be considered the equivalent of XML’s <beans/> element. Like <beans/>, it provides an opportunity to exp原创 2018-09-29 10:18:17 · 292 阅读 · 0 评论 -
SpringMVC注解
Controller参数@PathVariable:从URI的占位符中获取变量值;@GetMapping("/owners/{ownerId}/pets/{petId}")public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) { // ...}@RequestParam:从Get的...原创 2018-10-02 21:18:58 · 130 阅读 · 0 评论 -
SpringMVC异常处理
SpringMVC异常处理机制处理机制: DispatcherServlet.doDispatch内部所有异常被捕获,统一由HandlerExceptionResolver链处理,依次遍历判断当前HandlerExceptionResolver是否能够处理,如果能处理则直接处理返回结果,否则交由后续的HandlerExceptionResolver进行处理;public ModelAndV...原创 2018-10-02 15:17:32 · 220 阅读 · 0 评论 -
SpringMVC拦截器
HandlerInterceptor所有的拦截器必须实现HandlerInterceptor接口,该接口有三个方法,执行顺序如下:preHandle(…): Before the actual handler is executed;postHandle(…): After the handler is executed;afterCompletion(…): After the com...原创 2018-10-01 16:51:38 · 195 阅读 · 0 评论 -
HttpMessageConverters
背景知识Content-Type必须是具体确定的类型,不能包含 *;Accept匹配规则:最明确的优先匹配;@RequestMapping:consumes属性指定处理请求的提交内容类型(Content-Type),produces属性指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;HttpMessageConverters作用:Http...原创 2018-10-01 13:38:07 · 4204 阅读 · 1 评论 -
@EnableAspectJAutoProxy
作用 开启切面编程功能;使用 @Configuration @EnableAspectJAutoProxy public class AppConfig { }原理通过@Import导入AspectJAutoProxyRegistrar;通过@Configuration解析器注册AnnotationAwareAspectJAutoProxyC...原创 2018-07-22 19:20:49 · 3332 阅读 · 0 评论 -
AOP基础概念
基础概念连接点JoinPoint:某个具体方法;切点PointCut:用AspectJ切面编程语言描述的规则,给满足规则的连接点添加Advice;增强Advice:增强逻辑;切面Aspect:PointCut和Advice的组成;将增强逻辑织入目标对象的过程;开启切面编程方式一:注解@EnableAspectJAutoProxy与@Configuration搭配...原创 2018-07-22 15:34:45 · 115 阅读 · 0 评论 -
scan流程
扫描流程将basePackage路径下的所有class文件加载到内存;根据类的元信息进行过滤(excludeFilters/includeFilters); protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { for (TypeFil...原创 2018-07-16 09:40:10 · 391 阅读 · 0 评论 -
Spring 容器创建和Bean生命周期
生命周期详解参考:https://www.cnblogs.com/zrtqsk/p/3735273.html;原创 2018-07-19 17:36:39 · 189 阅读 · 0 评论 -
Bean属性设置过程
分类Bean属性设置分为两大类,如下:将外部配置文件中的值设置为属性值,常用@PropertySource和@Value组合;将容器中其它bean注入,常用@Autowired或@Resouce注解;处理器AutowiredAnnotationBeanPostProcessor处理逻辑分为两大步,如下:作为接口MergedBeanDefinitionPostProc...原创 2018-07-19 12:06:00 · 506 阅读 · 0 评论 -
Bean的初始化过程
初始化过程 bean实例化 –> 属性设置 –> afterPropertiesSet() –> init-method 初始化实现注解@Bean 通过注解@Bean属性initMethod和destroyMethod设置初始化和销毁方法;接口InitializingBean 对于InitializingBean的实现类,Sprin...原创 2018-07-18 21:27:14 · 929 阅读 · 0 评论 -
BeanFactoryPostProcessor
作用 在BeanFactory加载完所有bean定义后,对BeanFactory进行逻辑增强;public interface BeanFactoryPostProcessor { /** * Modify the application context's internal bean factory after its standard * initial...原创 2018-07-17 14:49:56 · 168 阅读 · 0 评论 -
BeanPostProcessor
作用 Bean的后置处理器,在初始化方法init-method前后,进行逻辑增强,Spring内置了很多实现类,常见的有ApplicationContextAwareProcessor、AutowiredAnnotationBeanPostProcessor等等,定义如下所示:public interface BeanPostProcessor { /** * App...原创 2018-07-16 11:07:48 · 634 阅读 · 0 评论 -
非托管类获取Spring容器信息
非托管类: 不受Spring容器管理的类;获取bean@Componentpublic class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; public static ApplicationContext get...原创 2018-12-27 14:06:06 · 425 阅读 · 0 评论