相关文章
大型网站一般具备9个特点:
- 高并发,流量大
- 高可用
- 大数据
- 迭代周期短
- 用户量庞大
- 可持续升级
- 安全级别高
- 可弹性扩展
- 吞吐量高,响应速度快
代码地址:https://github.com/alanhou/FoodieShop
架构师需要具备的能力
- 技术全面,有广度
- 关注前沿技术
- 全局观,预判
- 把控团队,忙而不乱
- 系统分解与模块拆分
- 指导与培训
- 沟通和协调能力
- 抽象、举例、画图
- 软技能
数据库建模工具: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,要么是启动类中添加如下注解:
1 |
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) |
本处请先检查foodie-api 的 pom 文件中是否配置了,如配置了请进行删除
1 |
<packaging>pom</packaging> |