- 博客(8)
- 收藏
- 关注
原创 springCloud+nacos+seata环境搭建
如果你通过官方文档的指导来搭建springCloud+nacos或者nacos+seata那么应该还算有比较多现成的案例和指导,但是如果是要将三者组合起来就不太容易找到现成的文档指引。这篇文章就是我踩坑之后总结的一些内容,希望对大家有帮助(适合新手入门)先写一下正确的示例,踩的坑后面再说。nacos服务端的部署就不说了,没有需要特别注意的。说一下seata服务端的部署,我们修改registry.conf文件内容如下:registry { # file 、nacos 、eureka、redis、z
2021-11-26 16:50:38
625
原创 springbatch自定义JobRepository
在默认配置下,当我们在oracle数据库上执行springbatch时会报"ORA-08177: 无法连续访问此事务处理"的错误,在网上查找资料,显示是因为springbatch的JobRepository默认的事务级别为“ISOLATION_SERIALIZABLE”,需要调整为“ISOLATION_READ_COMMITTED”才可以(具体为啥需要调整数据库事务级别还不是很清楚,需要找时间再研究清楚) 那么下一步我们自定义自己的JobRepository,通过查看官方文档([spring.io](h.
2020-12-31 18:12:28
2405
原创 springboot属性注入异常之谜
在上一篇文件中介绍了springboot加载配置文件的方式,即从"./config;./;classpath:/config;classpath:/"等4个地方加载配置文件,配置文件的属性按顺序保存在environment对象的propertysource对象中,当我们读取配置信息时即从propertysource列表中依次查找直到找到为止。举个例子,我们的应用在"./"和“classpath:/”中分别有一个application-dev.yml的配置文件,在“./”路径下的配置文件有属性“aa.bb=
2020-08-13 20:21:26
252
原创 springboot加载属性配置文件的步骤
springboot加载配置文件的方法在ConfigFileApplicationListener的load方法:public void load() { this.profiles = new LinkedList<>(); this.processedProfiles = new LinkedList<>(); this.activatedProfiles = false; this.loaded = new LinkedHashMap<>(
2020-08-13 12:06:48
641
原创 Mybaits的map-underscore-to-camel-case参数用法
mybatis的map-underscore-to-camel-case参数设置为true时,可以将数据库的带下划线“”给去掉然后映射到实体类的属性上去。mybatis映射属性时的逻辑大致是:1、先将字段的""去掉,具体见代码MetaClass的findProperty方法:public String findProperty(String name, boolean useCamelCaseMapping) { if (useCamelCaseMapping) { name =
2020-08-09 10:34:54
7307
原创 springboot 使用ConfigurationProperties加载配置文件
使用ConfigurationProperties加载配置文件的属性时,注意类中的功能方法命名不能以get…Set开头。 比如定义了一个如下的类:@Component @PropertySource("classpath:application.yml") @ConfigurationProperties(prefix = "oa.odsfile.sftp") @Setter @Slf4j public class FileTransferOdsSftp { private St
2020-08-05 17:20:31
327
原创 mybatis接口实例化过程解析
我们平时在使用mybatis时一般只需要定义一个接口,然后编写相应的mapper.xml文件,然后即可在spring中使用@Autowired进行注入即可使用。那么mybatis是如何根据接口来创建bean的呢? 一般我们在使用mybatis时,都会使用 MapperScan(basePackages = {"com.xxx.rootApp.mapper"})这样的注解来告诉程序去哪个包下面找我们定义的接口。程序会通过MapperScannerConfigurer类的postProce...
2020-08-05 17:17:44
495
原创 生产者消费者模式
有这样一个经典场景:我们定义一个对象obj,该对象有一个int类型的属性i.有一组线程,他们将obj对象的i由0变为1(称为生产者),另外有一组线程,他们将obj对象的值由1变为0(称为消费者)。我们在内存中看到obj的i值应该是0-1-0-1…这样变化的,不允许出现i值变为其他的值,比如(-1,2)。一般情况下,我们可以通过synchronized加Object的wait()和notify()方法实现,核心代码为:synchronized (obj) { while (i == 1) { t
2020-08-05 17:11:39
568
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人