
Spring
文章平均质量分 64
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
y_bccl27
这个作者很懒,什么都没留下…
展开
-
Spring中的@Autowired、@Qualifier、@Resourse、@Value注解
Spring中@Autowired、@Qualifier、@Resourse、@Value注解原创 2022-10-27 21:38:05 · 408 阅读 · 0 评论 -
Spring Bean默认是单例的,如何保证并发安全
如果还要进一步考虑到微服务或分布式服务的影响,方式 4 便不足以处理了,所以可以借助于可以共享某些信息的分布式缓存中间件如 Redis 等,这样即可保证同一种服务的不同服务实例都拥有同一份共享信息(如当前运行中的任务列表等这类变量)。对象,并对此成员变量的值进行修改操作,因此会互相影响,无法达到并发安全(不同于线程隔离的概念,后面会解释到)的效果。多次访问此 url,可以看到每次的结果都是自增的,所以这样的代码显然是并发不安全的。Spring的Bean默认都是单例的,某些情况下,单例是并发不安全的,以。原创 2022-09-24 11:52:50 · 195 阅读 · 0 评论 -
Spring中ApplicationContextAware的使用理解
当一个类实现了ApplicationContextAware接口之后,这个类就可以方便的获得ApplicationContext对象(Spring上下文),Spring发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContext(参数)方法,调用该方法时,会将容器本身ApplicationContext对象()作为参数传递给该方法,通过这个上下文环境对象得到Spring容器中的Bean。原创 2022-10-20 09:17:30 · 514 阅读 · 0 评论 -
Spring中的@DependsOn注解
@DependsOn注解用来表示一个bean A的实例化依赖另一个bean B的实例化,但是A并不需要持有一个B的对象,所依赖的bean会被容器确保在当前bean实例化之前被实例化。原创 2022-10-27 21:04:18 · 4862 阅读 · 0 评论 -
Spring状态机
Spring状态机就是状态模式的一种实现原创 2024-01-20 10:30:00 · 1351 阅读 · 0 评论 -
Spring Event 业务解耦神器
实际业务开发过程中,业务逻辑可能非常复杂,核心业务 + N 个子业务。如果都放到一块儿去做,代码可能会很长,耦合度不断攀升,维护起来也麻烦,甚至头疼。还有一些业务场景不需要在一次请求中同步完成,比如邮件发送、短信发送等。 MQ 确实可以解决这个问题,但 MQ 重啊,非必要不提升架构复杂度。针对这些问题,我们了解一下 Spring Event。Spring Event(Application Event)其实就是一个观察者设计模式,一个 Bean 处理完成任务后希望通知其它 Bean 或者说一个 Bean 想原创 2022-08-17 15:02:01 · 180 阅读 · 0 评论 -
Spring事务失效的12种场景
1.访问权限众所周知,Java的访问权限主要有4种:private、default、protected、public,它们的权限从左到右,依次变大。但如果我们在开发过程中,把有某些事务方法,定义了错误的访问权限,就会导致事务功能出问题,例如:@Servicepublic class UserService { @Transactional private void add(UserModel userModel) { saveData(userMode原创 2022-03-26 19:31:04 · 116 阅读 · 0 评论 -
Spring循环依赖
循环依赖指循环引用,是两个或多个Bean之间相互持有对方的引用第一种形态:相互依赖A依赖B,B依赖A第二种形态:三者间依赖A依赖B,B依赖C,C依赖A 第三种形态:自我依赖 A依赖自己形成了自我依赖单纯解决循环依赖使用二级缓存就可以,但是如果涉及到代理对象的循环依赖,就需要用三级缓存bean的生命周期的流程图如下所示: 例如当前有两个服务A和B,A注入了B,B又注入了A:三级缓存解决缓存依赖的流程图如下所示: 当前spring-beans的版本为5.3.3,原创 2022-07-02 17:31:47 · 158 阅读 · 0 评论 -
Spring中的Cache缓存机制
使用缓存的时候需要特别注意:防止缓存并发,并发量比较高的情况下,很可能出现多个请求同时查询1个key的情况,如果我们不加控 制,让这些请求全部穿透到数据库,容易导致数据库挂掉。正常的做法是:只放1个请求去数据库查询数据,其他请求等待(或者立即返回null),查询数据库的那个线程返回结果后再将数据加入缓存中。原创 2022-10-19 20:47:40 · 1319 阅读 · 0 评论 -
Spring中的@Validated注解
Spring Validation是对hibernate validation的二次封装,用于支持spring mvc参数自动校验。@Validated是Spring Validation下面的一个注解。原创 2020-01-14 11:11:15 · 1275 阅读 · 0 评论 -
@RestControllerAdvice与@ControllerAdvice的区别
@RestControllerAdvice注解与@ControllerAdvice注解位于同一个依赖包下面,其pom依赖为:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.3</version></dependency>有时原创 2021-09-10 13:13:48 · 1563 阅读 · 0 评论 -
@RequestParam注解四个属性字段说明
当前spring-web依赖版本为:<!-- https://mvnrepository.com/artifact/org.springframework/spring-web --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.3<原创 2021-08-30 17:30:23 · 1824 阅读 · 0 评论 -
@RequestParam和@RequestBody
@RequestParam1、常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方...原创 2020-01-14 16:41:34 · 129 阅读 · 0 评论 -
Spring中的InitializingBean接口
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。package org.springframework.beans.factory;public interface InitializingBean { void afterPropertiesSet() throws java.lang.Exception;}例如一个service实现类中实现了该接口,.原创 2021-03-14 13:22:00 · 193 阅读 · 1 评论 -
普通的Spring Web项目正常启动,在访问某些JSP页面时,页面会报错 http://java.sun.com/jsp/jstl/core
问题描述:普通的Spring Web项目正常启动,但是在访问某些JSP页面时,页面会报错出现:org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application解决方法: 我们查看一些JSP页面会发现其引入了jstl标签..原创 2020-11-15 22:54:05 · 402 阅读 · 1 评论 -
SpringMVC开发框架中使用@ResponseBody注解后返回的json字符串中文乱码问题
问题描述:在SpringMVC开发框架中使用@ResponseBody注解后返回的json字符串中文乱码解决办法:@ResponseBody注解可以直接将返回类打包成json格式,但是如果返回值是String类型的话,就会出现中文乱码问题。我们可以在@RequestMapping注解中将produces属性设置为{"application/json;charset=UTF-8"},如下所示...原创 2019-11-12 13:08:32 · 344 阅读 · 0 评论 -
Spring web项目中web.xml常用的配置
设置请求和响应时的编码为UTF-8<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> ...原创 2019-05-06 17:39:49 · 2571 阅读 · 0 评论 -
spring配合Junit进行单元测试
在测试类上添加@RunWith注解指定使用springJunit的测试运行器,@ContextConfiguration注解指定测试用的spring配置文件的位置。接着我们就可以注入我们需要测试的bean进行测试,Junit在运行测试之前会先解析spring的配置文件,初始化spring中配置的bean。@RunWith(SpringJUnit4ClassRunner.class)@Con...原创 2019-04-30 09:46:18 · 231 阅读 · 0 评论 -
Spring项目在启动时报Error running 'ProviderC': Cannot start process, the working directory 'E:\ ' does not
问题描述:Spring与Dubbo结合启动项目时,控制台报Error running 'ProviderC': Cannot start process, the working directory 'E:\ ' does not,出现这个问题的原因是 : 创建项目的时候选择项目目录有 “//”解决办法:关闭项目,重新导入该项目即可...原创 2019-03-09 22:34:15 · 1394 阅读 · 0 评论