springboot
在使用springbootapplication时,
作用一springbootconfiguration就是告知这是个注解类
作用二enableautoconfiguration是自动根据导的依赖来引入相关依赖,比如我导入spring-boot-starter-web总依赖,表明是web项目,它就会自动导入tomcat,springmvc,spring相关的包,至于各方面的配置,enableautoconfiguration会自动寻找spring.factories文件,里面有EnableAutoConfiguration为接口的一系列配置,springboot在初始化时就会加载到它们,但spring.factories里面的配置文件会不会生效就取决于你导入的依赖,比如根据web导入的springmvc包,只要配置文件上的ConditionOnClass里面的条件是springmvc,就会生效,但问题又来了,里面的属性值哪来呢?其实你会发现这些配置上都有EnableConfigurationProperties的注解,里面会有对应的属性读取类,至于里面的数据来源,在ConfigurationProperties注解上很清楚的表明prefix的条件,我们只要在application.Properties或yaml上以此开头配置就行,比如jdbc
作用三就是componentscan,也就是注解报扫描,这也导致启动类必须与这些包同级
springcloud(微服务)
注册服务(eureka)
负责提供注册服务,用户访问时可以通过它来找,相当于一个中介
依赖只要springcloud-eureka-server
配置
spring/application/name:eureka-server
eureka/cilent/service-url/defalutZone:http://127.0.0.1:10086/ 注册自己,其实它本身也是一个sevice至于注册自己与否,默认是注册的,看情况而定,如果是多集群,就要注册自己
#register-with-eureka: false # 不注册自己
#fetch-registry: false #不拉取
启动器方面:
只要在类上多加个EnableEurekaServer就行
注册服务的集群是通过相互注册实现的,以前是自己注册自己,现在要注册到其它上,客户端在注册是要都写上注册
defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
调用者
依赖按需导入,比如springboot-starter-web 客户端依赖springcloud-eureka-cilent
配置
和服务器的差不多,具体看情况
启动器
在类上多个客户端注解EnableDiscoveryCilent,还有就是bean注入restTemplate,这是用于请求的转发,在方法上面
还要加上loadbalanced,用于负载均衡
controller
最终都是使用restTemplate的getForObject(url,User.class);返回对应实体类对象
方法一: 是写死地址 String url = “http://localhost:8081/user/” + id;此时还没用客户端注解
方法二: 也不太好,因为使用了客户端注解,所以此时要通过eureka来找,注入discoverycilent,通过服务id来拉取服务
List instances = discoveryClient.getInstances(“user-service”);
ServiceInstance instance = instances.get(0);
String url = String.format(“http://%s:%s/user/%s”, instance.getHost(), instance.getPort(), id.toString())
方法三:因为在restTemplate上加上了负载均衡,所以此时可以直接在url里面加入服务id
String url=“http://user-service/user/”+id,原理大概就是用户请求,通过eureka的服务器,帮你找到对用提供方,
然后将提供方的ip加端口返回给restTemplate
最后都走String user = restTemplate.getForObject(url, String.class);
服务者
依赖按需,比如springboot-starter-web mysql-connector-java mapper-springboot-starter
还有就是springcloud-starter-netflix-eureka-cilent
配置:
在服务器的配置基础上,按需配置,如spring/datasource/url logging/level/包名:debug 端口也可以配置
启动器
类上多加个enablediscoverycilent就行,mapperscan也要导入对
controller
正常操作