
Spring
春风化作秋雨
学而思,思而学
展开
-
Spring中的@Qualifier与@Primary
使用场景:Spring匹配到多个可用的bean。1、@Qualifier 注解使用@Qualifier("bean名称")指定具体需要注入的 bean;这种方式控制方在使用方。public interface UserService {}@Servicepublic class UserService1 implements UserService {}@Servicepublic class UserService2 implements UserService {}原创 2022-02-22 09:49:01 · 470 阅读 · 0 评论 -
java redis 实现多线程资源复用
1、测试类package com.redis.resource;import org.assertj.core.util.Lists;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.ListOperations;import org.springframework.d原创 2022-01-17 16:16:48 · 999 阅读 · 0 评论 -
Spring @EnableAutoConfiguration 使用实例
1、自动装配类package com.auto.beanConfig;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;@Data@ConfigurationProperties(prefix = "spring.user")public class User { private String name;}2、配置信息 spring原创 2022-01-14 11:40:24 · 465 阅读 · 0 评论 -
Spring 注解 @Qualifier
场景一:注入指定名称的bean具体场景:当创建了多个同一类型的 bean 时,但是其他地方注入时候,只需其中一个。此情况,可使用 @Qualifier 注解和 @Autowired 注解通过指定哪一个真正的 bean 将会被装配来消除混乱。实现如下: @Autowired @Qualifier("user1") private User user;同等实现方式如下: @Resource(name="user1") private User user;场景原创 2022-01-13 23:04:11 · 251 阅读 · 0 评论 -
Spring 事务失效的7种场景
1、事务失效的7种情况 未启用spring事务管理功能 方法不是public类型的 数据源未配置事务管理器 自身调用问题 异常类型错误 异常被吞了 业务和spring事务代码必须在一个线程中 1.1、未启用spring事务管理功能@EnableTransactionManagement 注解用来启用spring事务自动管理事务的功能,这个注解千万不要忘记写了。1.2、方法不是public类型的@Transaction 可以用在转载 2022-01-13 22:44:40 · 25317 阅读 · 8 评论 -
Spring @EnableAsync &@Async实现方法异步调用 方式二:通过实现AsyncConfigurer接口
1、测试类package com.async;/** * Created by Liuxd on 2018-09-11. */import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Con原创 2022-01-07 16:55:52 · 818 阅读 · 0 评论 -
Spring @EnableAsync &@Async 实现方法异步调用 方式一
1、异步测试类package com.async2;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class AsyncTest { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConf原创 2022-01-07 16:44:08 · 285 阅读 · 0 评论 -
Spring IOC 代码实例
1、IOC测试类package com.ioc;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class IocTest { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigAp原创 2022-01-07 14:34:02 · 527 阅读 · 0 评论 -
Spring AOP 注解方式实现实例 版本二
1、AOP 测试类package com.aop.aspect;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class AopAspectTest { public static void main(String[] args) { AnnotationConfigApplicationContext context = new Anno原创 2022-01-07 14:11:18 · 117 阅读 · 0 评论 -
Spring AOP 注解方式实现实例 版本一
1、测试AOP类package com.aop.aspect;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class AopAspectTest { public static void main(String[] args) { AnnotationConfigApplicationContext context = new Annot原创 2022-01-07 12:09:03 · 333 阅读 · 0 评论 -
Spring Aop 手动编程
1、AOP 测试package com.aop;import org.springframework.aop.AfterReturningAdvice;import org.springframework.aop.MethodBeforeAdvice;import org.springframework.aop.framework.ProxyFactory;import org.springframework.lang.Nullable;import java.lang.reflect.原创 2022-01-07 10:37:12 · 1009 阅读 · 0 评论 -
Spring 中事务管理
Spring中使用事务有2种方式:1、编程式事务使用Spring中提供的事务相关的类,通过硬编码的方式来控制事务。编程式事务有2种用法1)通过PlatformTransactionManager控制事务2)通过TransactionTemplate控制事务2、声明式事务在方法上添加注解@Transaction...原创 2022-01-06 15:46:12 · 365 阅读 · 0 评论 -
Spring 声明式事务实例
1、测试类package com.tx.sm;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;import java.util.Map;public class TestTransaction3 { public stat原创 2022-01-06 15:38:49 · 352 阅读 · 0 评论 -
Spring 编程式事务实例
1、PlatformTransactionManagerpackage com.tx;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import org.spring原创 2022-01-06 15:12:39 · 1452 阅读 · 0 评论 -
Spring 循环依赖
Spring 循环依赖1、Spring能够解决set方法注入的循环依赖,使用了三级缓存解决。2、Spring无法解决使用构造器注入的循环依赖。使用构造器初始化对象要先保证对方都存在,无法实现。3、Spring无法解决多例模式的循环依赖。原型模式不存缓存,不能通过三级缓存解决。...原创 2021-12-30 20:58:36 · 296 阅读 · 0 评论 -
Spring bean 依赖注入
个人理解,有不当之处,请留言批评指正。原创 2021-12-30 10:50:02 · 208 阅读 · 0 评论 -
Spring Cloud
1、什么是Spring CloudSpring Cloud是一系列框架的有序集合。它利用 Spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring boot 的开发风格做到一键启动和部署。2、Spring cloud 的核心组件1、Eureka:服务注册与发现发现中心。2、Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,实现请求调用。3、Ribbon.原创 2021-12-19 15:20:16 · 158 阅读 · 0 评论 -
Spring boot 配置文件
1、spring boot 核心配置文件spring boot 核心的两个配置文件1)bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加载的,比 applicaton 优先加载,且 boostrap 里面的属性不能被覆盖。2)application (. yml 或者 . properties):用于 spring boot 项目的自动化配置。2、 spring boot 配置文件类型配置文件有 . pro原创 2021-12-19 15:08:59 · 2840 阅读 · 1 评论 -
Spring boot
1、Spring boot概念Spring boot 是为 Spring 服务的,它简化了Spring 应用初始搭建以及开发过程。2、Spring boot的好处1、配置简单,容易上手,提升开发效率。2、自动装配,三方类库bean仅仅通过基础配置就可以引用使用bean。3、告别繁琐的xml 配置。4、内置tomcat能够独立运行。5、提供应用监控。...原创 2021-12-19 15:04:13 · 209 阅读 · 0 评论 -
Spring MVC 运行流程
1、首先,SpringMVC 将请求发送给 DispatcherServlet。2、其次,DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller。3、然后,DispatcherServlet 再把请求提交到对应的 Controller。4、再者,Controller 进行业务逻辑处理后,会返回一个ModelAndView。5、接着,Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelA.原创 2021-12-19 14:54:52 · 418 阅读 · 0 评论 -
Spring 事务隔离
1、Spring事务五大隔离级别默认是ISOLATION_DEFAULT(使用数据库的设置),其他四个隔离级别和数据库的隔离级别一致:1、ISOLATION_DEFAULT使用数据库设置的隔离级别,数据库设置的是什么就用什么。2、ISOLATIONREADUNCOMMITTED读未提交,最低隔离级别。事务未提交前,数据就可被其他事务读取(会出现幻读、脏读、不可重复读)。3、ISOLATIONREADCOMMITTED读已提交,一个事务提交后,才能被其他事务读取到(会造成幻读、..原创 2021-12-19 14:48:48 · 4360 阅读 · 0 评论 -
spring 事务实现方式
1、声明式事务声明式事务,有两种实现方式:1)基于 xml 配置文件的方式<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.o原创 2021-12-19 14:38:40 · 509 阅读 · 0 评论 -
spring 自动装配 bean 方式
1、no不装配,如需要,则使用显式 bean 引用进行装配。2、byName根据 bean名称注入对象依赖项。@Resource默认按byName自动注入。3、byType根据类类型注入对象依赖项。@AutoWried按by type自动注入4、构造函数通过构造函数来注入依赖项,需要设置大量的参数。@Repositorypublic class CustomerDao extends SqlMapClientDaoSupport { @Autowir原创 2021-12-19 14:29:46 · 349 阅读 · 0 评论 -
Spring bean是否线程安全
结论:不是线程安全的Spring 容器中的Bean是否线程安全?容器本身并没有提供Bean的线程安全策略,因此可以说Spring 容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体scope的Bean去研究。Spring 的 bean 作用域(scope)类型:1、singleton:单例,默认作用域。 2、prototype:原型,每次创建一个新对象。 3、request:请求,每次Http请求创建一个新对象,适用于WebAppl...转载 2021-12-19 14:16:11 · 313 阅读 · 0 评论 -
Spring 注入方式
1、setter 属性注入@Controllerpublic class HelloController { private AlphaService alphaService; private BetaService betaService; @Autowired public void setAlphaService(AlphaService alphaService) { this.alphaService = alphaService原创 2021-12-18 23:20:07 · 176 阅读 · 1 评论 -
Spring 主要模块
1、Spring core框架的最基础部分,提供 ioc 和依赖注入特性。2、Spring aop提供了面向切面的编程实现,让你可以自定义拦截器、切点等。3、Spring context构建于 core 封装包基础上的 context 封装包,提供了一种框架式的对象访问方法。4、Spring Web提供了针对 Web 开发的集成特性,例如文件上传,利用 servlet listeners 进行 ioc 容器初始化和针对 Web 的 ApplicationContext。5原创 2021-12-18 23:08:48 · 463 阅读 · 1 评论 -
Spring AOP 简述
AOP 是面向切面编程,通过预编译方式和运行期动态代理,实现程序功能统一维护的一种技术。简言之,统一处理某一层面(特定类或特定方法)上问题的编程思想,比如统一实现日志记录、全局异常捕获等。...原创 2021-12-18 23:03:51 · 367 阅读 · 1 评论 -
Spring IOC简述
IOC:Inversionof Control,控制反转,是 Spring 的核心,Spring 负责控制对象的生命周期和对象间的依赖关系。简言之,控制是指当前对象对内部成员对象的管控权利;控制反转是指这种管控权不再由当前对象管理,而是由其他类或者第三方容器来管理。...原创 2021-12-18 22:55:33 · 332 阅读 · 1 评论 -
Spring优势
1、Spring支持IOC,Spring容器管理依赖对象,无需手动创建和管理依赖对象,轻松实现程序的解耦。2、Spring 提供面向切片编程(AOP),如此更方便的处理某一类的问题,做到了代码低侵入。3、Spring 提供事务支持,事务操作更加简单方便;在需要事务管理的地方加@Transactional 注解即可。4、更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。...原创 2021-12-18 22:46:01 · 638 阅读 · 1 评论 -
spring 自动装配 bean方式
1、no:默认值表示没有自动装配,应使用显式 bean 引用进行装配。2、byName它根据 bean 的名称注入对象依赖项。3、byType它根据类型注入对象依赖项。4、构造函数通过构造函数来注入依赖项,需要设置大量的参数。5、autodetect容器首先通过构造函数使用 autowire 装配,如果不能,则通过 byType 自动装配。...原创 2021-12-13 11:31:35 · 506 阅读 · 0 评论 -
spring bean 的作用域
spring 支持 5 种作用域1、singletonspring ioc 容器中只存在一个 bean 的实例,即bean 以单例模式存在,系统默认是singleton模式。2、prototype每次从容器获取bean时都会创建一个新实例,既每次 getBean()都相当于执行 new Bean()操作。Web 环境下的作用域:3、request每次 http 请求都会创建一个 bean。4、session同一个 http session 共享一个 bean 实例。.原创 2021-12-12 17:16:07 · 232 阅读 · 0 评论 -
Spring Bean 的生命周期
Srping的Bean从创建到销毁,如果是由BeanFactory来生成和管理Bean,Spring上下文中的Bean也类似,如下1、实例化一个Bean--也就是我们常说的new;2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入;3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值4、如果这个Bean已经实现了BeanFactoryA...原创 2021-12-12 16:51:06 · 82 阅读 · 0 评论 -
服务容错保护:Spring Cloud Hystrix
1、简介Hystrix,是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性、容错性与局部应用的弹性,是一个实现了超时机制和断路器模式的工具类库。2、原则1)防止单独的依赖耗尽线程资源;过载立即切断并快速失败,防止扎堆排队。2)提供回退以保护用户免受故障。3)使用隔离技术(例如隔板,泳道和断路器模式)来限制任何一个依赖的影响。4)通过近实时的指标,监控和告警,确保故障被及时发现5)通过动态修改配置属性,确保故障及时恢原创 2021-03-13 16:27:54 · 220 阅读 · 0 评论 -
客户端负载均衡: Spring Cloud Ribbon
客户端负载均衡: Spring CloudRibbon,它是一个基于HTTP和CP的客户端负载均衡工具,它基于NetflixRibbon实现。通过 Spring Cloud的封装,可以让我们轻松地将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。 Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都.原创 2021-03-06 16:17:31 · 172 阅读 · 0 评论 -
服务治理 Spring Cloud Eureka
Spring Cloud Eureka是 Spring Cloud Netflix微务套件中的一部分,它基于 NetflixEureka做了二次封装,主要负责完成微服务架构中的服务治理功能。 Spring Cloud通过为EurekaSpring增加了 Boot风格的自动化配置,我们只需通过简单引入依赖和注解配置就能让 iSpring Boot构建的微服务应用轻松地与 Eureka服务治理体系进行整合。1、构建服务注册中心2、服务注册与服务发现3、Eureka的基础架构4、Eureka的..原创 2021-03-06 15:07:37 · 144 阅读 · 0 评论 -
Spring之Ribbon与Nginx区别
1、Nginx 服务器端_负载均衡Nginx 是客户端所有请求统一交给 nginx,由 nginx 进行实现负载均衡请求转发,属于服务器端负载均衡。它是一种集中式的负载均衡器。即请求由 nginx 服务器端进行转发。2、Ribbon 客户端_负载均衡Ribbon 是从 eureka 注册中心服务器端上获取服务注册信息列表,缓存到本地,然后在本地实现轮询负载均衡策略。即在客户端实现负载均衡。3、应用场景的区别1)Nginx 适合于服务器端实现负载均衡 比如 Tomcat2)Ri原创 2021-01-30 16:54:01 · 1215 阅读 · 0 评论 -
Spring cloud RestTemplate
1、RestTemplate是什么Spring的RestTemplate是一个强大的,流行的基于Java的REST客户端。简言之,RestTemplate是Spring提供的一个访问Http服务的客户端类2、使用示例import org.apache.http.client.config.RequestConfig;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.clien原创 2021-01-30 15:37:51 · 242 阅读 · 1 评论 -
Spring Boot Web之配置接口WebMvcConfigurer
1、前言WebMvcConfigurer配置接口,是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。基于java-based方式的Spring MVC配置,需要创建一个配置类并实现WebMvcConfigurer接口,WebMvcConfigurerAdapter 抽象类是对WebMvcConfigurer接口的简单抽象(增加了一些默认实现),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapte原创 2021-01-25 22:50:26 · 2648 阅读 · 1 评论 -
Mybatis之map-underscore-to-camel-case开启驼峰功能
场景:数据库字段是下划线,程序中使用驼峰目的:实现数据库下划线字段与实体中的驼峰属性映射方式:设置map-underscore-to-camel-case属性为true来开启驼峰功能1、application.yml配置mybatis: mapperLocations: classpath:mapper/*.xml,classpath:mapper/base/*.xml configuration: map-underscore-to-camel-case: true原创 2021-01-23 13:59:46 · 11005 阅读 · 5 评论 -
本地程序无法通过公网ip访问测试环境redis集群_妥协方案
第一、场景描述1、测试环境安装redis6,集群部署,三主三从。即实现高并发,高可用,安全性高。2、Redis通过bind内网ip创建集群。3、本地与测试环境不在同一局域网,尚无VPN,无法通过测试内网ip访问redis。4、说明:通过redis客户端,使用公网ip+端口,可以访问redis。问题:spring程序无法通过公网ip+端口正确访问redis。原因:Spring访问redis集群,先通过配置的公网ip和端口获取redis集群所有节点的内网ip和端口,程序最后通过内网ip和原创 2020-12-21 22:44:32 · 794 阅读 · 1 评论