背景
作为一个具备java基础的前端工程师,了解到Spring boot是下一代的web框架,而Spring Cloud则是最新最火的微服务的翘楚,有必要在此记录他的项目构建方案,本文适用于前端开发小组的项目搭建,该项目的特性是不作为服务端发布,作为客户端发布,主要基于Spring Cloud,围绕Freemarker技术进行相关的配置,使用讲解。
前提
请务必确保你的机器上安装了Eclipse Java EE IDE for Web Develipers.我的版本是Mars.2 Release(4.5.2),这将是特别重要的关键的一步, Eclipse在手,天下我有。
请务必一定程度的了解Spring Cloud模式和概念。
请务必一定程度的了解Freemarker功能使用方法。
步骤
下载
在Help-Eclipse MarketPlace的搜索下载sts(Spring Tools(aka Spring IDE and Spring Tool Suite)), 安装等待,成功后重启Eclipse。
构建项目
此时已经成功的下载sts,
第一步 创建基于MAVEN的SpringCloud项目
在Java EE模式下的Project Ecplorer窗口中,右键new-Other-Spring-Spring Starter Project。
作为前端小组开发的基于客户端的项目,构建的时候必须加载Eureka Discovery组件(服务注册,用于向Eureka Server注册,将客户端信息发送到Eureka Server),Feign组件(作为HTTP客户端调用远程HTTP服务),Ribbon组件(负载均衡)。
作为服务提供开发组的微服务项目,构建时在上面的基础上还需要加载Eureka Server组件(用于发布可调用的服务),Zuul组件(路由 )等…具体根据项目实际需求决定。
加载的组件,可在新建项目的第二步搜索勾选组件,也可自行配置pom.xml文件,如下(客户端开发小组项目配置示例):
客户端项目开发还需要使用Freemarker等其他基本库,则需要在pom.xml中添加配置,如下:
项目创建成功之后,选中项目名右键Maven-Update Project-勾选项目-ok。
Tips
a. 删除项目路径下的mvnw文件和mvnw.cmd文件
b. Maven配置找不到包,需要配置Maven的settings
配置User Settings的文件settings.xml,文件内容如下:
您需要关心localRepository节点,mirrors-mirror-url节点的配置。
localRepository节点配置Maven将jar包加载在本地的那个磁盘路径里;
url节点配置Maven从何处去下载jar包;
配置信息根据企业实际项目情况约定。
修改生成你的配置文件,放置在本地的指定目录下;
Eclipse状态栏-Windows-Preferences-Maven-User Settings,找到你的配置文件详细路径配置在User Settings的文本框中-Apply-ok。
第二步 项目配置(客户端项目的应用配置)
项目创建成功后,你会发现该项目自动生成了一些文件,没用的我已经在上面建议你删除掉了,现在先介绍我们没有删掉的有用的文件。
目录1 src/main/javaz
该目录下的生成了一个XXXAppication.java的文件,这个文件用于项目启动。
启动方式 :选中该文件,右键Run As-Spring Boot App(建议在完成了第三步 目录资源整理后再尝试)
目录2 sec/main/resources
该目录下生成了一个application.properties的文件,这个文件用于项目配置。
配置方式:
为了配置信息使用树状结构展示更加清晰了然,建议您将properties后缀改成yml后缀。
|
|
|
|
|
|
++Freemarker配置说明++
templateLoaderPath对应的值(classpath:/)表示的是根目录,它用于后台服务返回页面的路径使用,在此有一个稍微的概念,后面具体使用了解。
suffix对应的值(.html)表示的是页面模板的后缀,有的项目使用ftl后缀,后台服务返回页面的时候就会找ftl后缀的页面,也可以理解为后台服务返回页面时自动加上了配置好的后缀。
至此,项目配置完成。
第三步 目录资源整理
重点1:我强烈的建议你将前端的css、js、图片等文件作为静态资源放置在src/main/resources下新建文件夹static目录下。
在XXXXApplication.java文件的同级目录下,新建我们此处命名为WebMvcConfig.java文件,它将是我们手动的编写一个拦截器,目的是在项目启动的时候,将静态资源的访问路径注册到根目录下(你也可以有其它的目的,根据你的项目实际情况来),内容如下:
|
|
完成了这个文件的编写,我们可以在前端的页面上通过/js、/css、/img去访问我们的静态资源,不会暴露它具体在哪个路径下。
@Configurable、@EnableWebMvc这两个注解会确保该文件在项目启动的时候被执行。
重点2:我们要在src/main下面新建webapp的文件夹,点击webapp文件夹,右键-Build Path-Use as Source Folder。
webapp文件夹下将会放置我们的项目开发的模块或者页面代码。
至于Use as Source Folder这个操作可以让我们后台通过’classpath:/‘直接访问webapp下面的文件,意思是:
用户发送请求到后台服务,后台服务经过一系列的数据处理,通过访问页面路径的形式将处理结果信息返回到页面上,’classpath:/‘将会是webapp这个文件夹的路径。
而上文中我们在application.yml中配置了templateLoaderPath的值为’classpath:/‘,那么此时webapp文件夹的访问路径就等于该项目的根’/‘。
举例说明:
在src/main/weapp目录下新建index.html, 内容如下:
|
|
在XXXXApplication.java的同级目录下新建controller包,在该包下new一个IndexController.java文件。内容如下:
|
|
该Controller将项目的根目录访问指向了index.html页面,’.html’的后缀是项目配置里配置好了的,能找到webapp下的index.html页面,也是因为我们将webapp文件夹配置为Use as Source Folder。
微服务合作开发
在项目配置里,我们配好了项目合作的微服务中心地址。
现在我们在controller同级目录建立一个interfaces包,此包下的文件用于合作服务接口开发。
举例
|
|
说明
@FeignClient(value = “service-zuul”)中的value值是合作方提供给你的,这是合作微服务项目的网关名称。
@RequestMapping(value = “/api-wx/woa/createOrUpdate”,method = RequestMethod.POST)中的value值是调用的具体接口路径,ip前缀地址就是我们已经项目配置中的++配置项目合作的微服务中心地址++,method值制定接口的访问方式。
到此,我们就建立好了微服务合作开发的连接。
然后我们新建WxoaController中使用WxApiFeign中的接口
代码片
|
|
以上,我们完成了微服务合作开发。
Freemarker在项目中的使用
Freemarker在项目中是一个数据模板开发的概念,如上WxoaController的goManage方法将会返回根目录下modules/wxoa/manage.html页面模板,通过ModelAndView对象装载了页面模板的地址和服务器的处理结果数据,我们在modules/wxoa/manage.html页面上解析处理结果数据的过程则使用了Freemarker,如下:
|
|
‘<#’开头的标签则是Freemarker语法。在上面的示例中Freemarker遍历了服务器的结果数据,将数据展示在了页面上,更多Freemarker的语法请参考更专业的文章。
结语
感谢您的阅读。