• 任晓天
    2019-02-20
    答疑这个板块必须赞,特别棒
    
     36
  • 马上到
    2019-04-23
    听了老师的课,感觉很跳很精简,更适合各方面都有点经验但是又不精的人,以后用到哪方面的知识可以来查,似乎不太适合系统学,个人一点浅见老师不要在意。
     1
     21
  • 劉阳河
    2019-02-20
    老师,可以讲下,为什么父service调用了方法,就可以实现回滚呢,可是开始调用方法的时候就没有走代理啊

    作者回复: 我读了半天,终于理解到你说的是FooService……我invokeInsertThenRollback虽然没有开启事务,但是我方法内部调用的代理类的insertThenRollback是有事务的。另外,你并不知道我一开始调用的fooService. invokeInsertThenRollback是不是走的代理类,通常我们都有各种增强,只是增强的内容不一样,我们经常接触到的都是代理类,只是你感觉不到而已。

    
     8
  • 新征程
    2019-02-19
    从开始到现在,我一点都没看懂啊。我只有JAVA基础,maven还不熟。对maven,spring framework,老师有没有好的书单帮推荐下,以让我们少走一点弯路。感觉也有不少朋友都有类似的状况。
    麻烦老师能答复一下,谢谢!

    作者回复: 额,建议还是先看下课程前的基础知识说明,先了解一些基础的必备知识。Spring的书,要不看看Spring in Action吧,Maven的基本使用,网上找些文章看看一般就行了。

    
     5
  • 五点半先生
    2019-02-26
    细细的看了好几遍评论留言 感觉学习到的东西好的呀
    
     4
  • Nacol
    2019-07-23
    关于事务隔离性 NESTED , 当外层事务抛出异常后可以回滚单体项目嵌套事务.
    如果我的 Service 方法调用的是其他项目提供的 Fegin, 则无法回滚.
    请问这种情况要如何处理事务?

    作者回复: 你这个就属于分布式事务啦,你在本地事务里调用了远程服务,那个服务如果成功了,你本地事务回滚,远程的事务都已经提交了。你要自己考虑怎么去回滚它。可以了解下BASE和TCC这些概念。

    
     3
  • Monster!
    2019-06-28
    老师,关于慢sql的那个例子,是在innoDB引擎下使用了for update并且有事务的时候才会有吗?我用的MySQL发现当有for update时不加@Transactional和加上@Transactional没有for update的两种情况都不会出现慢sql报错,请老师指导。

    作者回复: for update是在事务里锁住记录,你不加事务,那就单条select锁了立马就放了,所以不会hold其他请求。加了事务,不加for update,其他请求也不会hold住。

     1
     3
  • 扇子
    2019-02-20
    每次看老师的代码样例都能获得额外的收获。
    
     3
  • 大龙
    2019-03-16
    老师,我下载了您的代码. 在编译simplejdbcdemo的时候, 发现FooDao.java里面的Foo.builder()提示说methold is undefined for the type Foo. 我查看了Foo类,发现是有Builder()注解的。为什么会找不到呢? 类似的问题还发生在使用@Slf4j注解时,老是报告说log对象找不到。 必须手动添加对应的代码,比如private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(FooDao.class); 才能解决。 这是为什么呢?

    作者回复: 这些都是Lombok提供的,你是不是没有在IDE里装Lombok插件?我在答疑时强调了一定要安装Lombok插件。

    
     2
  • 五点半先生
    2019-02-26
    lombok 如果实体属性有默认值build生成的会为null 这种怎么解决呀

    作者回复: 点开@Builder注解,你会看到还有@Default注解好用

    
     2
  • Geek_9695b4
    2019-02-21
    老师我有个问题请教一下。我现在遇到一套系统很多租户的情况,请问这个是配置多数据源来处理吗,不同租户切换不同数据源,会不会有什么问题?假如租户数量有很多,譬如几十个上百个,还是需要一个个配置吗?如果不配置多个数据源,有什么解决方法吗?

    作者回复: 我按自己的理解说一下,仅供参考。假设你的多租户是B端的商户,一般商户也会分小商户、中型商户和大商户,小商户大家可以共用一套表,中型的自己独占一套,大商户自己还需要分库分表。可以通过中间件配合路由表来实现。系统里只要保证每次操作数据库都带上商户号,剩下的交给中间件就好了。

    
     2
  • 冉冉
    2019-12-18
    想问下老师,JDBC,hibernate,jpa,druid,sparding-shpere,HikariCP这些东西到底有啥区别啊,平时是不是只用其中一个就够了?感觉要蒙了

    作者回复: 显然你真的是没有搞明白这些东西的含义……JPA和JDBC都是规范,JPA可以看做ORM的一套规范,Hibernate是JPA的实现;JDBC提供了Java数据库操作的底层规范,各种连接啊、查询啊什么的操作都是JDBC来定义的,不同数据库都提供了遵循JDBC的驱动;Druid和HikariCP都是数据源,或者简单点说是数据库连接池;ShardingShpere是用来做分库分表。平时这些东西是要根据实际情况结合在一起来使用。

    
     1
  • SDL
    2019-10-19
    https://www.cnblogs.com/vi-2525/p/8761544.html 这个博主举了jdk代理和cglib代理的例子 模拟同类嵌套调用方法 cglib的例子是可以都被拦截 那是不是说明如果事务用cglib代理 在同类a方法调用使用有事物的b方法 a方法事物也起效?但是我实践了一下并不可以,我绕在这个代理和aop之间的关系了 希望老师能给点指导,谢谢🙏

    作者回复: 我看了那个文章,他自己用CGLIB增强了一下类,这个增强逻辑和Spring的还是有区别的。我准备了个简单的DEMO(https://github.com/digitalsonic/geektime-everyday/tree/master/aop/transaction-demo),你可以下载下来DEBUG一下,尤其是DataService.invokeMethod(),你可以看看执行到这里时的this是哪个对象。

     1
     1
  • SDL
    2019-09-30
    老师 同一个类中没有注解的方法调用一个有注解的方法注解不生效 是所有的注解都有这种情况吗?为什么我模拟的cglib代理 同一个类中A调用B 两个都被拦截了呢 这不就是都被代理到了吗?

    作者回复: 按照我的理解,有没有注解,调用被代理类增强的方法都是需要特殊处理的。不太清楚你的模拟场景,可以把代码贴到Github或者码云里,我们可以一起看看。

     1
     1
  • L N W
    2019-03-25
    老师,lombok的底层是怎么实现的呢?为什么加了注解就可以自动生成那些方法,是反射吗?动态代理?
    
     1
  • Elwin
    2019-03-13
    H2数据库在mac上怎么安装?

    作者回复: 不用安装,是内嵌的。如果你一定要在程序以外运行一个,它有命令行的,你从H2官网下载一个包,然后解压,到bin目录里执行命令可以启动一个独立的H2

    
     1
  • victoriest
    2019-03-09
    请问 spring boot 配置文件中究竟有哪些可配置的属性, 以及的那些属性的默认配置值(如: spring.datasource.***
    , ), 有没有相关文档用来索引查看?

    作者回复: 官方文档后面有个附录可以查,另外,我们在课程里也带大家看了很多自动配置类,每个属性类也会对应到配置项上。也可以通过配置属性类来反推出配置项。

    
     1
  • 大治
    2019-02-21
    老师, 有个疑问.我写了一个自定义aop的方法, @AfterReturning 返回通知. 这个aop拦截的是service业务的某个方法, 这个service方法使用了@Transaction注解(默认的). 那么我想问的是service方法走完之后, 走到aop方法中. 他俩之间事物的传播是怎样的呢?我测试发现, 当aop抛出异常后回滚, service方法也会跟着回滚. 这两个使用的是同一个事物吗? 还有我在aop的方法上加@Transaction注解, 不管设置NEWS还是NESTED都是无效的. 这是什么原因呢?

    作者回复: 你要看是哪个AOP先执行的,一般情况下你的AOP是在事务的AOP里面的,除非你自己设置的AOP的拦截顺序。所以你抛异常了,外面的事务的AOP拦截器就捕获到异常,接着回滚了。

    
     1
  • 书策稠浊
    2019-02-21
    怎样的sql才叫慢查询,这个慢的时间要怎么确定?

    作者回复: 这个看你们的业务了,不同的业务系统中“慢”的定义是不一样的,可以结合具体情况再咨询下你们公司的DBA。比如你系统里大部分SQL都是1ms内执行完的,那同一个系统里突然来条100ms的SQL,它就是慢SQL了。

    
     1
  • 闪光阳
    2019-02-21
    关于多线程事务问题,老师能讲一下吗?

    作者回复: 多线程之间最好事务隔离开,线程里用自己的事务。

    
     1
我们在线,来聊聊吧