SpringBoot-->SpirngCloud-->微服务:学习springboot是为微服务打定基础
注:springboot只能支持jdk1.8以上
1,自定义属性配置:
1.1 不同环境使用不同配置:
不同配置可以使用不同的启动方式,达到同步运行;例如
1.2 注解的使用
1.2.1 实现配置内容的注入:
@Value("${cupSize}")
1.2.2 随着配置文件的增加,需要对配置进行分组和注入
@Component
@ConfigurationProperties(prefix = "girl")
2,Controller的使用:主要用来接收用户端的请求
@Controller 处理http请求;给浏览器的访问权限(注解到Controller类上;需要thymeleaf模板;不推荐使用)
@RestController Spring4之后新加的注解,返回json;等同于@ResponseBody配合@Controller。(注解到Controller类上;用于前后端分离,提供rest接口给前端)
@RequestMapping 配置url映射; 需要用户通过某个url访问到我们的方法(注解到类/方法上)
注:
@RequestMapping(value = "/query",method = RequestMethod.GET)
RequestMethod设置请求方式,如果不写,默认get/post都可以请求.
@GetMapping / @PostMapping 组合注解(简化请求注解的书写--注解到方法上)
// @RequestMapping(value = "/say4",method = RequestMethod.GET)
// @PostMapping(value="/say4")
@GetMapping(value="/say4") // http://localhost:8081/hi/say4
public String test4(@RequestParam(value = "id",required = false,defaultValue = "0") Integer myId){
return "id:" + myId;
}
@PathVariable 获取url中的数据
// 获取url中的数据 http://localhost:8081/hi/say/23
@RequestMapping(value = "/say/{id}",method = RequestMethod.GET)
public String say(@PathVariable("id") Integer id){
return "id:" + id;
}
@RequestParam 获取请求参数的值
// 获取url中的数据 // http://localhost:8081/hi/say2?id=23
@RequestMapping(value = "/say2",method = RequestMethod.GET)
public String test2(@RequestParam("id") Integer myId){ // @RequestParam("id")和url中的id一致
return "id:" + myId;
}
注:可以给请求参数设置一个默认值,url中不用传参
@RequestMapping(value = "/say3",method = RequestMethod.GET) // http://localhost:8081/hi/say3
public String test3(@RequestParam(value = "id",required = false,defaultValue = "0") Integer myId){
return "id:" + myId;
}
3,使用spirng-data-jpa:
JPA是Java Persistence API(Java持久层API),是JDK 5.0注解或XML,描述 对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
目前实现这一规范的产品有:Hibernate、TopLink
spirng-data-jpa:Spring和Hibernate的整合
1、在pom.xml中添加spring-data-jpa和mysql的依赖
2、配置数据库的连接
3、创建实体类,映射数据表中的字段
4、编写控制层,请求接口操作数据库
4,事务操作:
springboot项目中,@transactional 无效
问题:
springboot项目,依然是使用jpa、Hibernate来操作mysql,涉及到数据库的操作,就少不了事务。写了一个接口,
用来测试@Transaction注解的作用,发现没有效果
分析:
在项目启动时候,看到Hibernate: create table hibernate_sequence (next_val bigint) engine=MyISAM,
说明是MyISAM引擎,由此我们也就很容易想到MyISAM与InnoDB之间的区别
解决:
发现Hibernate默认创建的表是MyISAM引擎,MyISAM引擎不支持事务操作,所以@Transaction注解不会起作用;
所以我们要做的就是,将数据库引擎改为InnoDB
1.查看表使用的引擎:show table status from db_name where name='table_name';
2.修改表引擎方法: alter table table_name engine=innodb;
首先,创建一个springboot项目:
springBoot启动:1,可以在IDEA中start,2,也可以在dos命令行进行启动(在项目路径下操作)
2.1;mvn spring-boot:run
2.2;先编译:mvn install; 进到target目录下:cd target; 执行.jar文件:java -jar ***.jar
备注:dir 显示当前目录下所有文件;dos窗口关闭,Tomcat停止运行。