####1、微服务、微框架
使用springBoot会使编码,配置,部署,监控变得很简单。。
第一节、springBoot是的springMVC升级版,两者没有必然的联系,可以直接学springBoot。
微服务:当下比较流行的架构或者说解决方案,很多公司都在用,spring家族为微服务架构提供了一整套组件,统称为SpringCloud。要使用SpringCloud就必须要先学会使用SpringBoot,SpringCloud是建立在SpringBoot的基础之上,学习SpringBoot为微服务打基础。
注意:java、maven等版本要保持一致。。
#####第二节、属性配置(例如下图是数据库的配置):
@Value:读取配置文件的属性值。@Value("${ cupSize }")。通过value注解把配置文件中的内容注到类的成员变量里去了。
随着配置文件的增加(属性太多啊),建议对配置文件做一个分组,那么就要用到(读yml中的属性)
@Component@ConfigurationProperties. – 把配置写到类里面去,最好做一个分组
有了@ConfigurationProperties注解,就不用写很多value的注解了。(这个注解是放到类上的)
spring: //类似于这样的分组
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbgirl
username: root
password: admin
jpa:
hibernate:
ddl-auto: update
show-sql: true
server:
port: 8080
girl: //分组
cupSize: B
age: 18
content: "cupSize: ${cupSize},age: ${age}}" //在配置里面再用当前配置
//获取前缀是girl的配置 获取yml配置
//把girl下面的那些属性都映射过来
@Component //要在controller中注入,需要这个注解。
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {
private String cupSize;
private Integer age;
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
总之这节课涉及到的注解:
@Value:实现配置内容的注入
@Component:把一个类当成一个组件加入到spring容器中
@ConfigurationProperties:按组读取配置内容,以什么开头的全都读出来。见上面代码
#####第三节、controller的使用
@Controller – 如果不加这个注解,浏览器是无法访问到的
(如果只是用@Controller,那必须配合一个模板来使用,但是模板不推荐,所以要配合@ResponseBody)
@RestController等同于@Controller和@ResponseBody的组合//写上这个注解,自动返回json格式数据
模板的方式了解下就行,因为
现在开发方式都是前后端分离的,后端只需要提供一些rest接口返回json格式给前端就可以了。而不用模板的方式,用模板的方式会给性能带来很大的损耗。 记住
处理url映射:
@RequestMapping(value = {"/hello","/hi"},method = RequestMethod.GET) //两个url都支持
RequestMethod.GET还是要指定,因为使用的业务场景不同,为了安全起见还是要指定。
如何处理URL中的参数,见下:
处理url里的参数:
http://127.0.0.1/hello/say/23
@GetMapping(value = "/say/{id}")
public String say(@PathVariable("id") Integer myId){
return "id: " + myId;
// return girlProperties.getCupSize();
}
传统的方式http://127.0.0.1/hello/say/?id=23
这样的话如何获取url中的值呢?
用@RequestParam(value = "id")Integer myId
@GetMapping(value = "/say") //推荐这个写法,和下面两行等同,就是@RequestMapping+请求的方式
//组合注解,节省时间 美化代码
//@PostMapping(value = "/s