文章目录
manven项目构建
注意:在使用maven构建聚合工程时,需要为每个子工程加上版本号version,此外应该先install root父工程
1.配置文件
application.yml:
- 数据源配置 ,使用hikaricp作为数据库连接池,性能比c3p0等一些连接池高许多;
hikari:
connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
minimum-idle: 5 # 最小连接数
maximum-pool-size: 20 # 最大连接数
auto-commit: true # 自动提交
idle-timeout: 600000 # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10分钟
pool-name: DateSourceHikariCP # 连接池名字
max-lifetime: 1800000 # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms
connection-test-query: SELECT 1
2.在配置数据库连接池的时候,最大连接数与最小连接数设置有 一定规则 ;
最大连接数和多线程一样,不是说设置越大越好,而是根据你的服务器配置来决定的。一般的,若你的服务器是4核的最大连接数设置为10为佳,若你的服务器是8核的最大连接数设置为20为佳。
最小连接数根据你程序来确定。
2.mybatis-generator-for-taobao工具:
- 配置正确的generatorConfig.xml,注意所在路径。
- 执行GeneratorDisplay.java的main方法,从数据库你想生成mapper以及对应的pojo类。
3.RestFul Web Service
1.无状态、独立性。
2.get(-> /order/{id})、post(-> /order)、put(-> /order/{id})、delete(-> /order/{id})。
3.接口示例:getStu
@Autowired
private StuMapper stuMapper;
@Transactional(propagation = Propagation.SUPPORTS)//声明事务,查询支持就行了
@Override
public Stu getStuInfo(int id) {
return stuMapper.selectByPrimaryKey(id);
}
4.注意:在使用RestFul风格时,在Application.java中需要使用
@MapperScan(basePackages = “com.kayakwise.mapper”)
4.事务机制
1.事务的注解 @EnableTransactionManagement可加可不加,因为springboot已经自动装配了。
Propagation
* REQUIRED: 使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法是必须运行在一个事务中的;
* 如果当前存在事务,则加入这个事务,成为一个整体。
* 举例:领导没饭吃,我有钱,我会自己买了自己吃;领导有的吃,会分给你一起吃。
* SUPPORTS: 如果当前有事务,则使用事务;如果当前没有事务,则不使用事务。
* 举例:领导没饭吃,我也没饭吃;领导有饭吃,我也有饭吃。
* MANDATORY: 该传播属性强制必须存在一个事务,如果不存在,则抛出异常
* 举例:领导必须管饭,不管饭没饭吃,我就不乐意了,就不干了(抛出异常)
* REQUIRES_NEW: 如果当前有事务,则挂起该事务,并且自己创建一个新的事务给自己使用;
* 如果当前没有事务,则同 REQUIRED
* 举例:领导有饭吃,我偏不要,我自己买了自己吃
* NOT_SUPPORTED: 如果当前有事务,则把事务挂起,自己不适用事务去运行数据库操作
* 举例:领导有饭吃,分一点给你,我太忙了,放一边,我不吃
* NEVER: 如果当前有事务存在,则抛出异常
* 举例:领导有饭给你吃,我不想吃,我热爱工作,我抛出异常
* NESTED: 如果当前有事务,则开启子事务(嵌套事务),嵌套事务是独立提交或者回滚;
* 如果当前没有事务,则同 REQUIRED。
* 但是如果主事务提交,则会携带子事务一起提交。
* 如果主事务回滚,则子事务会一起回滚。相反,子事务异常,则父事务可以回滚或不回滚。
* 举例:领导决策不对,老板怪罪,领导带着小弟一同受罪。小弟出了差错,领导可以推卸责任。
5.springboot下实现跨域
- 新增一个configration类 或 在Application中加入CorsFilter和CorsConfiguration方法
@Configuration
public class CorsConfig {
public CorsConfig() {}
@Bean
public CorsFilter corsFilter() {
// 1. 添加cors配置信息
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("http://localhost:8080");
config.addAllowedOrigin("*");
// 设置是否发送cookie信息
config.setAllowCredentials(true);
// 设置允许请求的方式
config.addAllowedMethod("*");
// 设置允许的header
config.addAllowedHeader("*");
// 2. 为url添加映射路径
UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
corsSource.registerCorsConfiguration("/**", config);
// 3. 返回重新定义好的corsSource
return new CorsFilter(corsSource);
}
}
添加配置后,就可以在前段调用后端接口成功了。
6.在整合日志时,需要将springboot自带的日志排除
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!--<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>-->
</dependency>
<!--引入日志依赖 抽象层 与 实现层-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
7.tomcat集群、负载均衡配置过程
1.将tomcat解压成两个目录,分别是tomcat1和tomcat2.使tomcat1使用默认配置,修改tomcat2配置即可。
2.修改tomcat2配置,修改3出端口,分别加1000.
3.在/etc/profile中设置环境变量
4.编辑catelina.sh
持续更新中…