热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Gradle和SpringBoot实现简单的RESTful框架应用

完整GitHub代码SpringBoot的目的是为了简化开发基于Spring框架的单体生产级系统,开发直接运行的Spring程序的框架;也可以理解为是一种简单的微服务框架。可以快速

完整GitHub代码

Spring Boot的目的是为了简化开发基于Spring框架的单体生产级系统,开发直接运行的Spring程序的框架;也可以理解为是一种简单的微服务框架。可以快速的开发基于Spring的Web应用,而且避免了复杂繁琐的XML配置。

文章中的例子,使用IDEA进行开发,Gradle作为包管理和自动化构建工具。

注意:执行过程中,如果有依赖包无法加载的问题,或者其他问题,多执行几次gradle build确保build可以正确通过。

第一步,在IDEA中创建一个Gradle项目

创建过程中,选择User auto-import其他的默认填写就可以,创建后以后默认就有一些文件和目录,以下是需要用到的。

  • build.gradle  gradle构建的脚本,包管理和稍后的构建,都是在脚本中配置的。
  • src/main  程序的主程序和配置文件。
  • src/main/java 主程序
  • src/main/resources 配置文件
  • src/test  测试的主程序代码和配置文件,结构和主程序相通。

第二部,配置Gradle脚本

内容如下:

buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.7.RELEASE")
}
}
group 'com.liuwill.demo'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
sourceCompatibility = 1.8
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
// end::jetty[]
// tag::actuator[]
compile("org.springframework.boot:spring-boot-starter-actuator")
compile("org.springframework.boot:spring-boot-starter-aop")
compile("org.springframework:spring-context-support")
compile("org.springframework:spring-tx")
compile "org.springframework:spring-jdbc"
// end::actuator[]
compile('org.freemarker:freemarker:2.3.23')
compile 'mysql:mysql-connector-java:5.1.36'
compile 'com.h2database:h2:1.4.189'
compile 'org.apache.commons:commons-dbcp2:2.1'
compile 'com.alibaba:fastjson:1.2.6'
testCompile group: 'org.testng', name: 'testng', version: '6.9.8'
testCompile 'com.jayway.jsonpath:json-path:2.0.0'
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile "org.springframework:spring-test"
}
test {
useTestNG{
suites 'src/test/resources/testng.xml'
useDefaultListeners = true
}
}

修改完之后点击Gradle Tool Window中的刷新按钮,会自动下载对应的依赖包。

第三步 创建Spring Boot的资源配置文件

src/resources/config目录下创建文件application.properties,指定运行web服务的端口,还有一些之前放在xml中的配置项。

server.port=8080
local.server.port = 8080
#MySql Config
spring.datasource.url=jdbc:mysql://localhost/demodb
spring.datasource.username=demo
spring.datasource.password=0123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initialize=false

第四步 创建Spring Boot的主类

主类中包含Main函数,是程序的挂载点,可以通过Java执行的方式,直接运行该类,就可以通过SpringBoot来编写Spring框架的应用。

package com.liuwill.demo.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import java.util.Arrays;
@SpringBootApplication
public class DemoBootApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(DemoBootApplication.class, args);
System.out.println("通过SpringBoot来注入依赖:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
}
}

第五步 通过注解和类的方式来进行SpringMVC配置

SpringBoot通过注解的方式来实现SpringMVC配置,代替复杂的XML文件,可以通过创建一系列不同的类,进行各种相应的配置,首先通过一个继承WebMvcConfigurerAdapter进行基础的配置,这里使用freemarker作为模版引擎。通过ComponentScan注解,可以配置要扫描bean的路径。

@Configuration
@EnableWebMvc
@EnableTransactionManagement
@EnableAutoConfiguration
@ComponentScan(basePackages = {
"com.liuwill.demo.boot.controller","com.liuwill.demo.boot.dao"
})
public class MvcConfigurer extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
resolver.setCache(true);
resolver.setPrefix("");
resolver.setSuffix(".ftl");
resolver.setContentType("text/html; charset=UTF-8");
return resolver;
}
@Bean
public FreeMarkerConfigurer freemarkerConfig() throws IOException, TemplateException {
FreeMarkerConfigurationFactory factory = new FreeMarkerConfigurationFactory();
factory.setTemplateLoaderPaths("classpath:templates", "src/main/resource/templates");
factory.setDefaultEncoding("UTF-8");
FreeMarkerConfigurer result = new FreeMarkerConfigurer();
result.setConfiguration(factory.createConfiguration());
return result;
}
}

第六步 编写一个简单的控制器

到这里基本的Spring Boot代码已经编写好,通过@RestController注解实现一个控制器类就可以看到运行的效果,代码如下

@RestController
public class DemoController {
@Autowired
private DemoService demoService;
@Autowired
private DemoUserService demoCommonService;
@RequestMapping("/demo")
public Map index() {
Map resultMap = new HashMap();
resultMap.put("status","success");
resultMap.put("content",demoService.getString());
return resultMap;
}
@RequestMapping(value = "/mobile/{mobile:.+}", method = RequestMethod.GET)
public Object getSingleLoanItem(@PathVariable("mobile") String mobile) {
Map resultMap = new HashMap();
resultMap.put("status","success");
resultMap.put("content",demoCommonService.getUserByMobile(mobile));
return resultMap;
}
}

接下来运行Gradle命令,gradle bootRun或者gradle run,就可以运行SpringBoot,并且加载Spring MVC框架了。直接执行curl http://localhost:8080/demo或者在浏览器中打开对应链接,就可以看到效果。

此外,idea默认会使用windows自带的gbk编码,会出现中文乱码问题,要在file encoding中设置所有的编码都是utf8。


推荐阅读
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 前言叨逼叨iOS上传文件,可能有很多第三方的框架之类的,比如AFN或者Alamofire之类的框架,但是今天要谈论的是原生的API是如何进行文件上传。兵 ... [详细]
  • 深入解析Spring Boot项目的启动机制
    在Java后端开发中,Spring Boot框架以其简洁性和强大的功能受到了广泛欢迎。本文将探讨Spring Boot项目启动的核心——SpringApplication类及其run()方法的工作原理。 ... [详细]
  • 微服务自动化.dockercompose
    目录一、docker-compose二、docker-compose安装与配置1、修改docker.service2、下载文件3、将刚才下载的docker-compose文 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文详细介绍了如何利用go-zero框架从需求分析到最终部署至Kubernetes的全过程,特别聚焦于微服务架构中的网关设计与实现。项目采用了go-zero及其生态组件,涵盖了从API设计到RPC调用,再到生产环境下的监控与维护等多方面内容。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
author-avatar
莫念暧昧_zTq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有