18.框架搭建
一、框架搭建1. 启动zookeeper !2. IDEA创建一个空项目;3.创建一个模块,实现服务提供者:provider-server , 选择web依赖即可4.项目创建完毕,我们写一个服务,比如卖票的服务;编写接口
package com.kuang.provider.service;
public interface TicketService {
public String getTicket();
}
编写实现类
package com.kuang.provider.service;
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《狂神说Java》";
}
}
5.创建一个模块,实现服务消费者:consumer-server , 选择web依赖即可6.项目创建完毕,我们写一个服务, ...
17.Dubbo环境搭建
Dubbo环境搭建点进dubbo官方文档,推荐我们使用Zookeeper 注册中心什么是zookeeper呢?可以查看官方文档
window下安装zookeeper1. 下载zookeeper :地址, 我们下载3.4.14 , 最新版! 解压zookeeper2. 运行/bin/zkServer.cmd ,初次运行会报错,没有zoo.cfg配置文件;可能遇到问题:闪退 !解决方案:编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因。
3. 修改zoo.cfg配置文件将conf文件夹下面的zoo_sample.cfg复制一份改名为zoo.cfg即可。注意几个重要位置:dataDir=./ 临时数据存储的目录(可写相对路径)clientPort=2181 zookeeper的端口号修改完成后再次启动zookeeper
4.使用zkCli.cmd测试ls /:列出zookeeper根下保存的所有节点
[zk: 127.0.0.1:2181(CONNECTED) 4] ls /
[zookeeper]
create –e /k ...
16.分布式 Dubbo+Zookeeper+SpringBoot
分布式理论什么是分布式系统?在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”;
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。分布式系统(distributed system)是建立在网络之上的软件系统。
首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题。。。
Dubbo文档随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,急需一个治理系统确保架构有 ...
15.任务
任务异步任务~定时任务~邮件任务~
TaskScheduler 任务调度者
TaskExecutor 任务执行者
@EnableScheduling //开启定时功能的注解
@Scheduled //什么时候执行
Cron表达式
14.配置Swagger
1.配置SwaggerSwagger的bean实例Docket;
2.Swagger配置扫描接口Docket.select()
3.我只希望我的Swagger在生产环境中使用,在发布的时候不使用
判断是不是生产环境 flag = false
注入enable()
4.配置API文档的分组.groupName("Violet")
5.如何配置多个分组,多个Docket@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("A");
}
总结
我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
接口文档实时更新
可以在线测试
【注意】在正式发布时,关闭Swagger!!!出于安全考虑。而且节省运行的内存
实体类配置package com.mine.swagger.config;
import org.springframework.context ...
13.SpringBot集成Swagger
1.新建一个SpringBoot-web项目2.导入相关jar包<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
3.编写一个Helloworld4.配置Swagger==》config@Configuration
@EnableSwagger2 //开启Swagger2
public c ...
12.国际化,中英文
1.首页配置1.所有的静态页面都要使用thymeleaf接管;
<html lang="en" xmlns:th="http://www.thymeleaf.org">
2.url: @{}
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
2.页面国际化
我们需要配置i18n文件
我们如果需要在项目中进行按钮切换,需要自定义一个组件LocaleResolver
package com.mine.hello.config;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRe ...
11.修改SpringBoot默认配置
修改SpringBoot的默认配置方式一这么多的自动配置,原理都是一样的,通过这个WebMVC的自动配置原理分析,我们要学会一种学习方式,通过源码探究,得出结论;这个结论一定是属于自己的,而且一通百通。
SpringBoot的底层,大量用到了这些设计细节思想,所以,没事需要多阅读源码!得出结论;
SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(如果用户自己配置@bean),如果有就用用户配置的,如果没有就用自动配置的;如果有些组件可以存在多个,比如我们的视图解析器,就将用户配置的和自己默认的组合起来!
扩展使用SpringMVCIf you want to keep Spring Boot MVC features and you want to add additional MVC configuration (interceptors, formatters, view controllers, and other features), you can add your own @Configuration class of type WebMvcCo ...
10.SpringMVC自动装配
SpringMVC自动配置在进行测试前,我们还需要知道一个东西,就是SpringBoot 对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制。只有把这些都搞清楚了,我们在之后使用才会更加得心应手。 途径一:源码分析,途径二:官方文档
地址
我们来阅读一段官方文档:
29.1.1 Spring MVC Auto-configuration
Spring Boot provides auto-configuration for Spring MVC that works well with most applications.
The auto-configuration adds the following features on top of Spring’s defaults:
//包含视图解析器
Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.
//支持静态资源文件夹的路径,以及webjars
Support for serving static resources ...
9.定制首页和静态资源加模板引擎
静态资源
模板引擎前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况, SpringBoot这个项目首先是以jar的方式,不是war,像第 二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的。
那不支持jsp,如果我们直接用纯静态页面的方式,那给我们开发会带来非常大的麻烦,那怎么办呢,SpringBoot推荐你可以来使用模板引擎。
那么这模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有以用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想都是一样的,什么样一个思想呢我们来看一下这张图。
模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢, ...