Alan Hou的个人博客

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

相关文章 

Java Spring 5框架学习笔记

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

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

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

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

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

架构师需要具备的能力

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

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 文件中是否配置了,如配置了请进行删除

 

退出移动版