Java架构师成长直通车:单体项目阶段

Coding Alan 4年前 (2020-01-01) 12502次浏览 6个评论 扫描二维码

相关文章 

Java Spring 5框架学习笔记

Java架构师成长直通车:LVS+Nginx实现高可用集群

Java架构师成长直通车:主从复制高可用Redis集群

大型网站一般具备9个特点:

  • 高并发,流量大
  • 高可用
  • 大数据
  • 迭代周期短
  • 用户量庞大
  • 可持续升级
  • 安全级别高
  • 可弹性扩展
  • 吞吐量高,响应速度快

代码地址:https://github.com/alanhou/FoodieShop

Java架构师成长直通车:单体项目阶段

架构师需要具备的能力

  • 技术全面,有广度
  • 关注前沿技术
  • 全局观,预判
  • 把控团队,忙而不乱
  • 系统分解与模块拆分
  • 指导与培训
  • 沟通和协调能力
  • 抽象、举例、画图
  • 软技能

Java架构师成长直通车:单体项目阶段

数据库建模工具:http://pdman.cn/

通过该工具可设计数据库并进行版本管理,参见https://github.com/alanhou/FoodieShop的 tools 文件夹下foodie-dev.pdman.json文件

Maven 仓库:https://mvnrepository.com

自动装配源码追踪:@SpringBootApplication > @EnableAutoConfiguration > AutoConfigurationImportSelector > getCandidateConfigurations定位到该文件,在相应包的META-INF/spring.factories文件中包含所有自动装配的设置

数据源:https://github.com/brettwooldridge/HikariCP

国内也常会使用https://github.com/alibaba/druid

逆向生成工具MyBatis Generator:官方网站为http://mybatis.org/generator/index.html

在generatorConfig.xml中配置对应的数据表,示例参见https://github.com/alanhou/FoodieShop的 tools 文件夹,其中的配置应与项目的目录一一对应

注意:此逆向生成工具为追加式的,也就是再次执行GeneratorDisplay.java时会重复生成员相同的内容

IDEA 中去除@Autowired 下红线,Preferences>Editor>Inspections>Autowiring for Bean Class取消勾选保存。

事务的传播

传播行为含义
REQUIRED如果有事务在运行,当前的方法就在这个事务内运行,否则就开启一个新的事务,并在自己的事务内运行,默认传播行为
REQUIRED_NEW当前方法必须启动新事务,并在自己的事务内运行,如果有事务正在运行,则将它挂起
SUPPORTS如果有事务在运行,当前的方法就在这个事务内运行,否则可以不运行在事务中
NOT_SUPPORTED表示该方法不应该运行在事务中。如果存在当前事务,在该方法运行期间,当前事务将被挂起。如果使用JTATransactionManager的话,则需要访问TransactionManager
MANDATORY当前的方法必须运行在事务内部,如果没有正在运行的事务,就会抛出异常
NEVER当前方法不应该运行在事务中,如果有运行的事务,就抛出异常
NESTED如果有事务在运行,当前的方法就应该在这个事务的嵌套事务内运行。嵌套的事务可以独立于当前事务进行单独地提交或回滚。如果当前事务不存在,那么其行为与PROPAGATION_REQUIRED一样。

生产准备特性

  • 指标:/actuator/metrics
  • 健康检查:/actuator/health
  • 外部化配置:/actuator/configprops

本地可通过 jconsole 进行连接

 

IDEA快捷键

Cmd+F12 查看文件结构

Ctrl+h 查看类的结构

Cmd+Opt+t 对选中语句添加 try…catch…等

Cmd+O 快速查找类等

常见问题

1、Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.

网上常见的解决方式要么是引入spring-boot-starter-web,要么是启动类中添加如下注解:

本处请先检查foodie-api 的 pom 文件中是否配置了,如配置了请进行删除

 

喜欢 (2)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(6)个小伙伴在吐槽
  1. 您好,在这个单体项目,我卡在一个地方了。使用Tomcat部署前端代码之后,发现前端代码不能跟后端联调
    Ivan2020-03-16 12:42 回复
    • Alan
      不能联调具体的问题是什么呢?可以先检查下:1、前端项目是否可正常启动运行?2、是否前后端使用了同一端口导致项目启动失败
      Alan2020-03-16 13:26 回复
      • 我启动Tomcat以后,在localhost上可以正常打开网页,但是不管点注册也好,登录也好,都没反应,控制台也不报错。并没有跟视频中说的会出现跨域问题。而且在前端进行注册提交表单,无法写进数据库。
        Ivan2020-03-16 20:54 回复
        • Alan
          感谢信任,建议先查看下控制台“网络”标签下所提交请求的链接是否与本地后端相符(可通过 XHR 进行过滤);相应链接的配置地址为前端项目下的 app.js
          Alan2020-03-18 09:34 回复
  2. 求视频
    不知道是谁2020-02-11 16:46 回复
    • Alan
      抱歉,这个只是学习笔记,不提供视频下载的哈
      Alan2020-02-11 17:49 回复