Spring & SpringMVC
文章平均质量分 59
Spring & SpringMVC & SpringData
c&0xff00
纸上学来终觉浅
展开
-
ApplicationContextAware的使用说明
引入问题今天讲一下ApplicationContextAware接口的使用,原因是我认为这一段代码可能是有问题的,我认为有问题的代码:@Controllerpublic class UserController { private static final User USER = SpringContextUtil.getBean(User.class); @ResponseBody @RequestMapping("/getUser") public String getUser(){原创 2021-03-08 15:38:45 · 1353 阅读 · 0 评论 -
Spring AbstractApplicationContext#refresh()源码解析(1)
源码一览 public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // 1、Prepare this context for refreshing. prepareRefresh(); // 2、Tell the subclass to refresh the internal bean factory.原创 2020-12-07 21:26:37 · 268 阅读 · 1 评论 -
spring+tomcat的web项目一开始是怎么启动的
问题由来我们平时常用的spring+tomcat的web项目是怎么启动的呢?带着这个疑问探索一下。Tomact查看tomcat下/conf/context.xml:<Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource></Context>我们大概知道,默认的上下文加载原创 2020-12-06 22:01:08 · 2725 阅读 · 5 评论 -
spring aop源码解读(Advice、Pointcut、Advisor)
spring aop介绍面向切面编程是一种编程思想,解决的场景是将项目中一些零散的,通用的逻辑从原业务逻辑的硬编码调用中脱离出来,并在运行时再动态的编织进去。这就是面向切面技术,如日志,注解等功能就经常采用切面技术。spring aop是spring的一项核心功能,采用的是动态代理的思想,主要有jdk自身的动态代理和cglib动态代理两种。说到代理,我们看下代理模式的类图:进入正题我们知道了spring aop的实现是基于动态代理的,代理可以在原有目标对象的前后增加一些逻辑以实现需求,那具体是怎原创 2020-11-19 10:32:16 · 1402 阅读 · 2 评论 -
Spring Bean加载过程(源码解读)
BeanFactory与ApplicationContext区别BeanFactory是ApplicationContext的一个子集,BeanFactory只提供简单容器的功能,就像只有一个水桶,水桶里面只装了水。(水桶就像beanFactory,水就是bean)。ApplicationContext除了有容器功能以外,还提供了国际化,事件监听等,就像水桶了除了装了水,还有鱼,虾。Spring Bean加载过程言归正传,看bean的加载过程。我们只要选一个BeanFactory(单纯的水桶)作为例子原创 2020-10-15 12:55:53 · 487 阅读 · 0 评论 -
JPA @Basic单表查询实现大字段懒加载
近期看了JPA@Basic注解的使用,看到该注解可以设置字段的懒加载。1.以前碰到的懒加载:我们知道,多表关联的时候,我们是可以配置懒加载的,比如一个Company类,里面可以关联员工表,办公设备表,当我们查看公司信息的时候,我们并不需要直接加载员工表,办公设备表,只需要在用户查看员工,查看设备的时候再加载,这样可以提高加载效率。长话短说,大概是这样子的 @Entity @Ta...原创 2019-09-12 17:06:38 · 2500 阅读 · 2 评论 -
JPA中@Basic注解详解
今天我们来聊聊JPA @Basic注解的使用。1.介绍:@Basic 是实体类与数据库字段映射时最简单的类型。在该注解的介绍中:The <code>Basic</code> annotation can be applied to a persistent * property or instance variable of any of the follo...原创 2019-09-12 14:31:35 · 18864 阅读 · 0 评论 -
解决springmvc中使用redirect跳转后https变为http
方法一:配置文件修改ViewResolver的 redirectHttp10Compatible属性,这个属性是为了兼容 http1.0协议。<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property...转载 2019-12-17 14:53:17 · 1684 阅读 · 2 评论 -
SpringMVC中的FlashMap
我们都知道,重定向时一般都是不传数据的,如果一定要传数据,只能在URL中拼接字符串来传递,但是通过拼接字符串有缺点,比如长度问题,安全问题那有没有什么方法能做到隐藏传送呢?答案就是SpringMVC中的FlashMap!在SpringMVC中,每次请求都会走到DispatcherServlet的service方法中(因为重写了HttpServlet的service方法)当进入servi...转载 2019-12-05 13:48:48 · 824 阅读 · 0 评论 -
详解SpringMVC注解@initbinder解决类型转换问题
在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换,而SpringMVC默认不支持这个格式的转换,所以需要手动配置,自定义数据的绑定才能解决这个问题。在需要日期转换的Controller中使用SpringMVC的注解@initbinder和Spring自带的WebDateBinder类来操作。WebDataBinder是用来绑定请求参数到指定...转载 2019-09-18 13:15:15 · 326 阅读 · 0 评论 -
前台请求后台用@RequestBody接收数据
请求示例:将传输的对象JSON.stringify()JSON.stringify() 表示从一个对象中解析出字符串 $.ajax({ url: "http://localhost:8201/search", type: "post", contentType: "application/json;charset=UTF-8", d...原创 2019-01-28 15:26:14 · 6648 阅读 · 0 评论 -
SpringBoot配置HTML文件跳转(问题:SpringMVC究竟能不能做到)
背景:大家都知道springMVC可以负责将字符串解析为页面,实现jsp页面的跳转<!-- 配置视图解析器,方便页面返回 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-...原创 2019-01-24 10:02:51 · 1416 阅读 · 1 评论 -
同类方法调用@Transaction注解的方法,事务失效(AOP原理)
背景说来话巧,这次项目开发用了Oracle里面的一种事务级临时表,on commit delete rows,意味着这张临时表会在每次事务提交的时候删除数据。涉及知识点Spring事务传播机制、AOP实现方案:需要对临时表的一系列操作在一个事务中执行,事务传播机制采用默认值PROPAGATION_REQUIRED,这样只要外层有事务,事务内嵌套的事务会加入到当前事务中执行,可以实现在同一事务的需求问题出现插入方法用得是batchSave我是如何发现问题的按理说上面的batchSav原创 2020-08-19 19:13:53 · 2862 阅读 · 0 评论 -
SPRING的事务传播机制
传播行为 意义 PROPERGATION_MANDATORY 表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常 PROPAGATION_NESTED 表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它看起来和PROPAGATION_REQUIRED 看起来没什么...转载 2018-10-24 10:35:44 · 234 阅读 · 0 评论 -
spring/springMVC扫描配置中use-default-filters
一句看懂:use-default-filters是component-scan标签的一个属性,默认为true,指扫描“comtroller、repository、component、service”所有的注解类,如果为false,指关闭这个默认行为,需要手动指定扫描的注解,所以一般use-default-filters=false与include-filter配合使用。实例说明:先看一...原创 2020-02-20 16:17:47 · 1323 阅读 · 0 评论 -
Spring事务传播行为详解
前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文...转载 2020-01-15 13:18:15 · 136 阅读 · 0 评论 -
谈谈JDK动态代理和CGlib动态代理的一点思考
既然说到了代理,我们就来聊聊代理是什么?什么叫代理:代理,英文:Proxy,本来是一个网络的概念,如代理服务器,正向代理,反向代理等。利用了这一思想,就有了设计模式中的代理模式:这是代理模式的结构图,可以看出Proxy对RealSubject对实现了Subject接口,实现了相同的Request方法,它直接包含了RealSubject的实例,保留了原来的所有事情,同时还增加了请...原创 2019-12-17 14:03:55 · 204 阅读 · 0 评论 -
Spring-Aspect切面类(@Aspect)首先必须是bean
问题描述今天发现老工程里有个日志切面但是总是也没有执行过。问题解决1 )怀疑是execution表达式问题,先后改动了AspectJ表达式也不生效。2 )在idea里打断点调试,tomcat启动后发现断点红圈没有打勾(这种情况就表示代码永远不会走进来)。最后一看,这个被标注了@Aspect的切面类根本就不是spring管理的bean。加上了@Component一切正常。总结问题...转载 2019-12-13 15:26:42 · 2262 阅读 · 0 评论 -
Spring中的aware接口
Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的。aware,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。先举个BeanNameAware的例子,实现BeanNameAware接口,可以让该Bean感知到自身的BeanName(对应Spring容器的BeanId属性)属性,举个例子:BeanNameAw...转载 2019-12-05 10:52:19 · 69 阅读 · 0 评论 -
web.xml中的filter配置+spring filter配置中targetFilterLifecycle属性作用
我们平时写过滤器一般有一下两种,以日志过滤器为例: <!--第一种日志过滤器--> <filter> <filter-name>logFilter</filter-name> <filter-class>cn.com.common.filter.LogFilter</filter-...原创 2019-12-04 17:16:23 · 1204 阅读 · 0 评论 -
Spring的LoadTimeWeaver(代码织入)
在Java语言中,从织入切面的方式上来看,存在三种织入方式:编译期织入、类加载期织入和运行期织入。编译期织入是指在Java编译期,采用特殊的编译器,将切面织入到Java类中;而类加载期织入则指通过特殊的类加载器,在类字节码加载到JVM时,织入切面;运行期织入则是采用CGLib工具或JDK动态代理进行切面的织入。AspectJ采用编译期织入和类加载期织入的方式织入切面,是语言级的AOP实现,提...转载 2019-11-14 17:20:03 · 1065 阅读 · 0 评论 -
同一方法被多个Aspect拦截, 修改切面@Around @Before的执行顺序
今天碰到一个问题,两个切面切了同一个方法,advice分别为 before和around,我要实现的逻辑是@before注解的方法先执行,再执行@Around注解的方法。奇怪的问题是,在本地(JDK6)执行的确是先@before后@Around执行的,到服务器上又是先@Around后@before,很奇怪。上网一搜,有相关的与jdk版本有关的说法,未测试,不知道正确与否网上大多的说法,...原创 2019-10-11 19:26:01 · 6535 阅读 · 0 评论 -
Spring的PropertyPlaceholderConfigurer实现对属性的可配置详细讲解
1.先回忆一下经典,还记得我们刚开始做web项目的时候,数据库连接的配置吗?<context:property-placeholder location="classpath:db.properties"/>这是一种加载.properties的方式,在xml的配置文件中直接可以通过${key}引用了2.主角登场之前再介绍一种方式:<bean id="confi...原创 2018-12-07 11:22:57 · 4485 阅读 · 0 评论