springboot创建webservice访问mysql(使用maven)

安装

使用maven,在你的pom.xml中添加如下配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> maven package 测试是否安装成功
mvn dependency:tree 查看你的安装依赖

起步

src/main/java 下面添加一个类,假如如下代码

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*; @SpringBootApplication // 声明主程序类
@RestController // 声明我们的类是一个web容器
@EnableAutoConfiguration // 自动配置spring
public class first {
@RequestMapping("/") // 监听("/")路由,返回字符串
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(first.class, args); // 开启tomcat服务器,运行程序 }
} 如果端口冲突,可以配置tomcat的端口
在src/main/resources/
创建文件application.properties
加入 server.port=8888 # application.properties文件的格式
application.name=@project.name@
application.version=@project.version@ 1. maven运行spring
运行 mvn spring-boot:run
2. 打包成可执行文件执行
运行 mvn package 打包war文件
运行 jar tvf FirstMaven-0.0.1-SNAPSHOT.war 查看war包里面的内容
运行 java -jar FirstMaven-0.0.1-SNAPSHOT.war 运行可执行文件
访问 http://localhost:8888/#/

spring常用命令

mvn dependency:tree                                                 查看依赖
mvn spring-boot:run 运行程序
mvn package 打包程序
jar tvf myproject-0.0.1-SNAPSHOT.jar 查看jar包内部信息
java -jar myproject-0.0.1-SNAPSHOT.jar 运行你的jar包

spring常见注释

@RestController                                                     声明是一个控制器和@Controller等效,用来处理网络请求
@RequestMapping 声明请求的路径
@Autowired 自动注入,你可以使用构造器注入来代替@Autowired,如下
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
}
public class DatabaseAccountService implements AccountService {
@Autowired
RiskAssessor riskAssessor;
}
上面两者等价
@SpringBootApplication 等价于开启@EnableAutoConfiguration,@ComponentScan,@Configuration
@EnableAutoConfiguration 开启spring默认依赖配置
@ComponentScan 如果这个添加入口文件,那么可以扫描到@Component, @Service, @Repository, @Controller声明的文件,并且自动注册成bean
@Configuration 允许配置其他的bean和使用@Import导入其他配置类
@Import 导入其他配置类@Import({ MyConfig.class, MyAnotherConfig.class })

springboot入门级使用

配置你的pom.xml文件


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent> <properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
</jvmArguments>
</configuration>
</plugin>

配置文件

application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=1000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
server.port=8888
server.session.timeout=10
server.tomcat.uri-encoding=UTF-8

创建所需测试类

Greeting.java
public class Greeting { private final long id;
private final String content; public Greeting(long id, String content) {
this.id = id;
this.content = content;
} public long getId() {
return id;
} public String getContent() {
return content;
}
} GreetingController.java import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong; import javax.security.auth.message.callback.PrivateKeyCallback.Request; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; @RestController // 标记控制器返回一个域对象
public class GreetingController {
@Autowired
private JdbcTemplate jdbcTemplate; private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong(); @CrossOrigin(origins = "http://localhost:8080") // 跨域设置
@RequestMapping("/greeting") // 绑定路由,支持get,post,put,限定路由方式的写法@RequestMapping(method=RequestMethod.GET,value="/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
} @CrossOrigin(origins = "http://localhost:8080")
@RequestMapping(method=RequestMethod.GET,value="/mytest")
public List<Map<String, Object>> mytest(@RequestParam(value="name", defaultValue="小红") String name) { // @RequestBody Map<String,Object> params
String sql = "select * from test WHERE name=?;";
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, name);
return result;
}
}
first.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class first {
public static void main(String[] args) {
SpringApplication.run(first.class, args);
}
}

测试页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// axios.get('http://localhost:8888/greeting').then(function (response) {
// console.log(response);
// }).catch(function (error) {
// console.log(error);
// }).then(function () {
// }); // axios.get('http://localhost:8888/greeting', {
// params: {
// name: 'User'
// }
// }).then(function (response) {
// console.log(response);
// }).catch(function (error) {
// console.log(error);
// }).then(function () {
// }); axios.post('http://localhost:8888/greeting').then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
}).then(function () {
}); axios.post('http://localhost:8888/greeting', {
name: 'User'
}).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
}).then(function () {
});
</script>
</head>
<body> </body>
</html>

绑定路由的其他方式

@GetMapping("/employees")
@GetMapping("/employees/{id}") @PostMapping("/employees") @PutMapping("/employees/{id}")
@DeleteMapping("/employees/{id}")

springboot成神之——springboot入门使用的更多相关文章

  1. springboot成神之——springboot+mybatis+mysql搭建项目简明demo

    springboot+mybatis+mysql搭建项目简明demo 项目所需目录结构 pom.xml文件配置 application.properties文件配置 MyApplication.jav ...

  2. springboot成神之——ioc容器(依赖注入)

    springboot成神之--ioc容器(依赖注入) spring的ioc功能 文件目录结构 lang Chinese English GreetingService MyRepository MyC ...

  3. springboot成神之——mybatis和mybatis-generator

    项目结构 依赖 generator配置文件 properties配置 生成文件 使用Example 本文讲解如何在spring-boot中使用mybatis和mybatis-generator自动生成 ...

  4. springboot成神之——swagger文档自动生成工具

    本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...

  5. springboot成神之——log4j2的使用

    本文介绍如何在spring-boot中使用log4j2 说明 依赖 日志记录语句 log4j2配置文件 本文介绍如何在spring-boot中使用log4j2 说明 log4j2本身使用是非常简单的, ...

  6. springboot成神之——mybatis在spring-boot中使用的几种方式

    本文介绍mybatis在spring-boot中使用的几种方式 项目结构 依赖 WebConfig DemoApplication 方式一--@Select User DemoApplication ...

  7. springboot成神之——application.properties所有可用属性

    application.properties所有可用属性 # =================================================================== # ...

  8. springboot成神之——websocket发送和请求消息

    本文介绍如何使用websocket发送和请求消息 项目目录 依赖 DemoApplication MessageModel WebConfig WebSocketConfig HttpHandshak ...

  9. springboot成神之——发送邮件

    本文介绍如何用spring发送邮件 目录结构 依赖 MailConfig TestController 测试 本文介绍如何用spring发送邮件 目录结构 依赖 <dependency> ...

随机推荐

  1. 【Java】抽象类和接口

    一.抽象类和抽象方法 1.什么是抽象类 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容. 但是普通类中不能有抽象方法, ...

  2. 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用

    2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...

  3. Python3 pyinotify 监视文件、文件夹修改

    /************************************************************************************ * Python3 pyin ...

  4. python学习之准备

    快速入门:十分钟学会Pythonhttp://python.jobbole.com/43922/python框架http://www.elias.cn/Python/HomePage#toc14[Py ...

  5. HDU - 6430:TeaTree (线段树合并)

    Recently, TeaTree acquire new knoledge gcd (Greatest Common Divisor), now she want to test you. As w ...

  6. nmap 扫描工具

    Nmap 7.30 ( https://nmap.org ) 使用方法: nmap [扫描类型(s)] [选项] {目标说明}目标说明:通过主机名称, IP 地址, 网段, 等等.协议: scanme ...

  7. 【java规则引擎】drools6.5.0中kie的概论

    什么是KIE? KIE是jBoss里面一些相关项目的统称,下图就是KIE代表的一些项目,其中我们比较熟悉的就有jBPM和Drools. 这些项目都有一定的关联关系,并且存在一些通用的API,比如说涉及 ...

  8. Linux下搭建 NFS

    一.NFS简介 NFS是Network File System的缩写,即网络文件系统.一种使用于分散式文件协定,有SUN公司开发.功能是通过网络让不同的机器.不同的操作系统能够分享个人数据,让应用程序 ...

  9. 10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides(转)

    10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides Wednesday, Janua ...

  10. Timer的异常

    定时任务用Timer实现有可能出现异常,因为它是基于绝对时间而不是相对时间进行调度的.当环境的系统时间被修改后,原来的定时任务可能就不跑了.另外需要注意一点,捕获并处理定时任务的异常.如果在Timer ...