SpringBoot
amadeus_liu2
这个作者很懒,什么都没留下…
展开
-
spring boot: 使用MyBatis从hive中读取数据
二、添加mybatis starter和hive依赖。五、定义controller,注入mapper并使用。启动hiveserver2。四、定义mapper。原创 2024-04-18 07:02:53 · 683 阅读 · 0 评论 -
SpringBoot: MongoTemplate之findAndModify
【代码】SpringBoot: MongoTemplate之findAndModify。原创 2024-03-20 18:59:41 · 326 阅读 · 0 评论 -
SpringBoot: MongoTemplate之创建collection时定制化
当文档多于指定的个数之后,后来插入的文档会覆盖之前的文档。原创 2024-03-20 13:23:26 · 171 阅读 · 0 评论 -
SpringBoot: MongoTemplate之inCollection
【代码】SpringBoot: MongoTemplate之inCollection。原创 2024-03-20 10:55:54 · 113 阅读 · 0 评论 -
Spring Boot: 使用MongoOperations操作mongodb
这段代码创建了一个username为kean的文档,然后再通过username为kean这个条件去查询文档并返回给接口。二、定义实体类来映射mongodb中的collection。四、注入自动配置的MongoOperations并使用。三、配置文件中配置mongodb。原创 2024-03-20 08:05:45 · 402 阅读 · 0 评论 -
SpringBoot: 通过MyBatis访问ClickHouse
二、SpringBoot项目添加mybatis、clickhouse、druid相关依赖。七、controller中注入mapper(此处省略了service)六、配置SqlSessionFactory。一、ClickHouse中建表,添加数据。五、定义mapper。原创 2024-01-03 09:45:58 · 1113 阅读 · 0 评论 -
SpringBoot: 手动注册bean的另一种方法@Import
【代码】SpringBoot: 手动注册bean的另一种方法@Import。原创 2023-09-30 21:28:08 · 84 阅读 · 0 评论 -
SpringBoot:手动注册bean
【代码】SpringBoot:手动注册bean。原创 2023-09-30 20:36:35 · 423 阅读 · 0 评论 -
kafka复习:(26)通过RecordHeaders和RecordHeader来实现TTL功能
一、定义生产者,在消息中加入RecordHeaders。三、定义消费者,配置上述拦截器。原创 2023-09-04 12:51:11 · 810 阅读 · 0 评论 -
SpringBoot复习:(61)拦截器(HandlerInterceptor)的用法
二、通过WebMvcConfigurer配置拦截器。原创 2023-09-03 22:46:32 · 295 阅读 · 0 评论 -
SpringBoot复习:(60)文件上传的自动配置类MultipartAutoConfiguration
配置为-1表示不限制。xxx为location\maxFileSize\maxRequestSize等其中之一。原创 2023-09-03 17:45:26 · 542 阅读 · 0 评论 -
SpringBoot复习:(59)自定义类型转换器
二、将自定义类型转换器注册到Spring boot。原创 2023-09-02 18:13:28 · 327 阅读 · 0 评论 -
SpringBoot: @PreDestroy只有bean为singleton时有效
【代码】SpringBoot: @PreDestroy只有bean为singleton时有效。原创 2023-08-21 13:51:32 · 86 阅读 · 0 评论 -
SpringBoot复习:(57)ServletRequestListener
基于配置文件的spring mvc 的话,需要配置@ComponentScan并配置web.xml,示例。原创 2023-08-19 18:54:20 · 104 阅读 · 0 评论 -
SpringBoot复习:(56)使用@Transactional注解标记的方法的执行流程
当调用studentService的addStudent方法时,会直接跳到CglibAopProxy类去执行intercept方法(因为studentService是使用cglib生成的代理对象)到这句时,chain里就是Spring Boot在生成代理对象时配置的Advisor,实际就是一个TransactionInterceptor.接着往下执行,到。retVal拿到了业务方法调用的结果,然后调用commitTransactionAfterReturning,将事务提交,整个流程结束。原创 2023-08-19 11:49:55 · 396 阅读 · 0 评论 -
SpringBoot复习:(55)在service类中的方法上加上@Transactional注解后,Spring底层是怎么生成代理对象的?
从上图可以看到,要从传入的元素(实际就是我们定义的业务方法)来获取它是否包含@Transactional注解,如果包含,则调用parseTransactionAnnotation来获取注解上配置的事务相关的属性(也就是在@Transactional注解上配置的那些值)可以看到它会调用refreshContext方法来刷新Spring容器,这个refreshContext方法最终会调用AbstractApplicationContext的refresh方法,代码如下。原创 2023-08-18 14:40:10 · 653 阅读 · 1 评论 -
SpringBoot复习(54)用于事务处理的InfrastructureAdvisorAutoProxyCreator BeanPostProcessor是在哪里被注册到容器的?
从类的继承关系看InfrastructureAdvisorAutoProxyCreator是一个BeanPostProcessor.类包装成了BeanDefinition注册到了Spring容器。原创 2023-08-18 11:36:23 · 69 阅读 · 0 评论 -
SpringBoot复习:(53)TransactionInterceptor是在哪里配置的?
我们知道SpringBoot的事务(@Transactional)最终是通过TransactionInterceptor的invoke方法调用invokeWithinTransaction方法来开启事务控制的。可以看到这里创建了一个TransactionInterceptor类型的bean并且注入到了BeanFactoryTransactionAttributeSourceAdvisor这个bean.TransactionInterceptor bean在哪里配置的呢?原创 2023-08-18 10:33:03 · 359 阅读 · 0 评论 -
SpringBoot复习:(52)不再需要使用@EnableTransactionManagement的原因
在Spring项目中,要用事务,需要@EnableTransactionManagement注解加@Transactional注解。可以在其内部类EnableTransactionManagementConfiguration中使用了@EnableTransactionManagment。原创 2023-08-15 12:25:55 · 880 阅读 · 1 评论 -
SpringBoot复习:(51)默认情况下DataSource是怎么创建出来的,是什么类型的?
可以看到,如果没有在配置文件指定 spring.datasource.type这个属性,则默认会创建HikariDataSource.如果我们引入了Druid库,并配置了。Druid数据源的配置是通过DruidAutoConfiguration创建的。则HikariDataSource bean将不会创建。原创 2023-08-15 08:26:05 · 848 阅读 · 0 评论 -
SpringBoot复习:(50)TransactionManager是哪里来的?是什么类型的?
可见它的类型是DataSourceTransactionManager.它是通过自动配置创建的。原创 2023-08-15 08:01:18 · 246 阅读 · 0 评论 -
SpringBoot复习:(49)NamedParameterJdbcTemplate用法
【代码】SpringBoot复习:(49)NamedParameterJdbcTemplate用法。原创 2023-08-14 22:55:33 · 152 阅读 · 0 评论 -
SpringBoot复习:(48)RedisAutoConfiguration自动配置类
spring-boot-starter-data-redis默认引入的是lettuce依赖,所以默认使用的RedisConnectionFactory是LettuceConnectionFactory.想使用JedisConnectionFactory的话,需要手动引入jedis依赖。可以看到创建了一个名为redisConnectionFactory的类型为JedisConnectionFactory的bean,父类型为RedisConnectionFactory.原创 2023-08-14 15:56:33 · 1065 阅读 · 0 评论 -
SpringBoot复习:(47)ConfigFileApplicationListener
它监听ApplicationEnvironmentPreparedEvent和ApplicationPreparedEvent。它会把配置文件中配置的内容注入到环境中去,配置文件也就生效了。原创 2023-08-14 12:17:57 · 133 阅读 · 0 评论 -
SpringBoot复习:(46)全局的bean懒加载是怎么实现的?
它会从容器中获取BeanDefinition,然后循环遍历,调用每个BeanDefinition的setLazyInit方法并传入ture. 这样在refresh方法中调用finishBeanFactoryInitialization创建所有单例对象时这些bean将不会被创建,从而完成了全局懒加载。原创 2023-08-14 11:51:22 · 550 阅读 · 0 评论 -
SpringBoot复习:(45)@Component定义的bean会被@Bean定义的同名的bean覆盖
【代码】SpringBoot复习:(45)@Component定义的bean会被@Bean定义的同名的bean覆盖。原创 2023-08-14 11:30:16 · 891 阅读 · 0 评论 -
SpringBoot复习:(44)MyBatisAutoConfiguration
可以通过application.properties的MyBatis的Configuration下的属性或者自定义ConfigurationCustomizer来配置哪些mybatis-config.xml settings中配置的属性。只有不启用mybatis-config.xml时,mybatis.configuration或者ConfigurationCustomizer的配置才生效。例如:mybatis.configuration.mapUnderscoreToCamelCase=true。原创 2023-08-14 07:48:39 · 1471 阅读 · 0 评论 -
SpringBoot复习:(43)如何以war包的形式运行SpringBoot程序
三、打成war包,在外置的tomcat容器或者idea里运行。这个类的configure方法会被Servlet容器调用。一、.pom.xml配置packging为war。原创 2023-08-13 16:47:44 · 1143 阅读 · 0 评论 -
SpringBoot复习:(42)WebServerCustomizer的customize方法是在哪里被调用的?
因为它是BeanPostProcessor,所以它的postProcessBeforeInitialization方法会被Spring容器调用,从图中可以看到,postProcessBeforeInitialization方法调用了容器中所有实现了WebServerFactoryCustomizer接口的bean的customize方法。BeanPostProcessor中定义的registerBeanDefinition方法会被Spring容器调用。原创 2023-08-13 16:09:47 · 822 阅读 · 0 评论 -
SpringBoot复习:(41)配置文件中配置的server开头的属性是怎么配置到Servlet容器中起作用的?
ServletWebServerFactoryCustomizer类实现了了WebServerFactoryCustomizer接口,通过customize方法可以对WebServerFactory进行配置。而ServerProperties通过使用@ConfigurationProperties注解导入了配置文件中已server开头的那些配置项。可以看到其中使用了@EnableConfigurationProperties导入了ServerProperties。原创 2023-08-13 13:25:32 · 800 阅读 · 0 评论 -
SpringBoot复习:(40)@EnableConofigurationProperties注解的用法
【代码】SpringBoot复习:(40)@EnableConofigurationProperties注解的用法。原创 2023-08-13 13:14:01 · 780 阅读 · 0 评论 -
SpringBoot复习(39)Servlet容器的自动配置原理
通过这个这三个配置类可以看出,它们都使用了@ConditionalOnClass注解,当类路径存在tomcat相关的类时,会配置一个TomcatServletWebServerFactory类型的bean, 当类路径存在jetty相关的类时,会配置一个JettyServletWebServerFactory 类型的bean, 当类路径存在undertow相关的类时,会配置一个UndertowServletWebServerFactory类型的bean。原创 2023-08-13 12:32:07 · 689 阅读 · 0 评论 -
SpringBoot复习:(38)WebServerFactoryCustomizer
可以通过这种方式对内嵌的Servlet容器进行配置。原创 2023-08-13 09:59:46 · 424 阅读 · 0 评论 -
SpringBoot复习:(37)自定义ErrorController
自定义的ErrorController覆盖默认的BasicErrorController。当出错时,也统一返回自定义的数据格式,而不是Spring的ResponseEntity。所有接口统一返回的数据格式。原创 2023-08-12 22:59:17 · 877 阅读 · 0 评论 -
SpringBoot复习:(36)国际化
当没有配置LOCAL_RESOLVER_BEAN_NAME(常量值为localeResolver)这个bean时,自动配置的这个LocaleResolver生效。默认加载的资源文件为resources目录下的messages.properties,有这个文件match返回true,否则返回false.常量MESSAGE_SOURCE_BEAN_NAME为messageSource,也就是有这个名字的bean,则自动配置失效。二、自动配置类MessageSourceAutoConfiguration。原创 2023-08-12 17:25:48 · 585 阅读 · 0 评论 -
SpringBoot复习:(35)jackson常用注解
JsonInclude(JsonInclude.NOT_NULL)字段不空时才会在转json时包含该字段。@JsonIgnore用来标注当把对象转成json时需要忽略的字段。@JsonProperty用来指定格式化数据时属性的名字。@JsonFormat用来格式化数据格式,比如日期。原创 2023-08-12 12:03:27 · 106 阅读 · 0 评论 -
SpringBoot复习:(34)@EnableWebMvc注解为什么让@WebMvcAutoconfiguration失效?
它会把容器中的类型为WebMvcConfigurer的bean注入到类型为WebMvcConfigurerComposite的成员变量configurers中。所以当配置类上有@EnableWebMvc注解后,自动配置类@WebMvcAutoConfiguration将失效。而WebMvcConfigureAutoConfiguration类定义如下。它导入了DelegatingWebMvcConfiguration。可以看到它继承了WebMvcConfigurerSupport类。原创 2023-08-12 11:40:57 · 862 阅读 · 0 评论 -
SpringBoot复习:(33)WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter
也就是把List传给WebMvcConfigurer的成员变量delegates.它的父类DelegatingWebMvcConfiguration,WebMvcAutoconfiguration内部静态类。原创 2023-08-12 11:31:51 · 690 阅读 · 0 评论 -
SpringBoot复习:(32)WebMvcConfigurer
【代码】SpringBoot复习:(32)WebMvcConfigurer。原创 2023-08-11 23:15:42 · 48 阅读 · 0 评论 -
SpringBoot复习:(31)Controller中返回的对象是如何转换成json字符串给调用者的?
当controller中返回对象时,会调用MappingJackson2HttpMessageConverter父类AbstractJackson2HttpMessageConverter中的writeInternal方法,将数据写到outputstream输出流。而这个自动配置类又通过@Import注解导入了JacksonHttpMessageConvertersConfiguration类,在这个类中配置了一个类型为MappingJackson2HttpMessageConverter类型的bean.原创 2023-08-11 18:30:44 · 571 阅读 · 0 评论