spring
spring
小熊123~
优秀是一种习惯
展开
-
SPI机制
JDK SPI//resources/META-INF/services //com.xxx.Logcom.xxx.impl.Log4j com.xxx.impl.Logback //public class Main { public static void main(String[] args) { ServiceLoader<Log> serviceLoader = ServiceLoader.loa原创 2021-01-25 17:40:27 · 160 阅读 · 0 评论 -
全局异常拦截(含自定义异常)
@ControllerAdvice(assignableTypes = {BaseController.class})@ResponseBodypublic class GlobalExceptionAspect { private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionAspect.class); private Map<String, String> getErrorM.原创 2020-08-13 11:12:14 · 618 阅读 · 0 评论 -
spring事务特性和事务传播
事务特性: 原子性 一致性 隔离性(不同事务相互隔离) 持久性(一旦完成不可逆转) 事务传播七大行为 无事务 required supports 如果当前程序存在事务就加入该事务运行,如果不存在事务则在非事务中运行 mandatory 必须在一个事务中运行,否则就会抛出异常mandatory 这个单词有强制性的意思我们默认用required 而不用mandatory,是因为mandatory不能自动创建事务 required _new 不管事务是不是存在,都会另起一个事务,如果事.原创 2020-08-15 08:44:50 · 151 阅读 · 0 评论 -
spring事务失效的几个原因(同类调用,被调用方法事务注解失效)
1.数据库引擎不支持事务 MySql的MyISAM引擎不支持事务,导致事务注解失效。2.没有被Spring管理 // @Service public class OrderServiceImpl implements OrderService { @Transactional public void updateOrder(Order order) { // update order; .原创 2020-08-24 15:07:19 · 2303 阅读 · 0 评论 -
同类方法调用,注解失效的问题
问题: 在Spring管理的项目中,方法A使用了Transactional注解,试图实现事务性。但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致回滚,也即事务失效了。原因: Transactional是Spring提供的事务管理注解。 重点在于,Spring采用动态代理(AOP)实现对bean的管理和切片,它为我们的每个class生成一个代理对象。只有在代理对象之间进行调用时,可以触发切面逻辑。(Spring动态代理详情可戳:spring自动加载,使.原创 2020-08-24 15:14:52 · 1390 阅读 · 0 评论 -
spring异步(@EnableAsync和@Async)
@Configuration@EnableAsyncpublic class MyAsyncConfigure implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(7); .原创 2020-08-26 15:55:27 · 123 阅读 · 0 评论 -
spring源码001
web.xml <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> ContextLoaderListener public void contextInitialized(ServletContextEvent event) { initWebApplicationContext(event.getServletContext()); } .原创 2020-08-26 17:04:42 · 126 阅读 · 0 评论 -
spring循环依赖的解决
1. 什么是循环依赖?循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。Spring中循环依赖场景有:(1)构造器的循环依赖(2)field属性的循环依赖其中,构造器的循环依赖问题无法解决,只能拋出BeanCurrentlyInCreationException异常,在解决属性循环依赖时,spri..转载 2020-09-17 09:13:41 · 2610 阅读 · 0 评论 -
Spring源码(一) web.xml加载
web.xml<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-context.xml</param-value></context-param><listener> <listener-class>org.springframework.w...原创 2020-10-29 17:15:26 · 454 阅读 · 0 评论 -
Spring源码(二) refresh()
AbstractApplicationContext@Overridepublic void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { //准备刷新 prepareRefresh(); //获取新鲜的beanFactory ConfigurableListableBeanFactory beanFactory = o原创 2020-10-30 14:50:08 · 193 阅读 · 0 评论