摘要:第一步首先创建一个简单的工程,这里也可以用上的模版。第二步建立需要用到的数据库表,及数据。第三步建立项目的各个模块,实现相应的逻辑。模块就是一个简单的调用方法,代码如下模块代码如下参数为必填项至此,整个项目创建完成,然后就是启动测试了。
一直用SpringMVC+Spring开发,虽然用了这么久,但对里面繁琐的配置还是很头疼,这种情况改用Springboot,无疑是个很好的选择。废话不多说,直接介绍自己如何使用的,在这之前还是有必要介绍下接下来的这个案例,这是一个入门级的Springboot应用案例,实现访问一个测试接口,获取到数据库中数据。
第一步:首先创建一个简单的MAVEN工程,这里也可以用IDEA上的MAVEN模版(maven-archetype-webapp)。然后就是在pom.xml中引入Springboot相关的依赖,这里先默认继承spring-boot-starter-parent(实际项目往往需要定义自己的)。
4.0.0 com.zyk testSpringboot war 1.0-SNAPSHOT testSpringboot Maven Webapp http://maven.apache.org org.springframework.boot spring-boot-starter-parent 1.5.6.RELEASE UTF-8 UTF-8 1.7 yyyyMMdd org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-log4j 1.3.8.RELEASE net.sf.json-lib json-lib 2.4 jdk15 org.springframework.boot spring-boot-starter-test test testSpringboot org.springframework.boot spring-boot-maven-plugin
这里使用的是JPA连接数据库,数据库是mySql,数据库配置在application.properties中
#数据库配置 spring.datasource.url=jdbc:mysql://192.168.8.189:3306/test spring.datasource.username=root spring.datasource.password=root server.port=8080 #项目访问路径 server.context-path=/testSpringboot
使用的log4j来记录日志,配置文件为log4j.properties
#------------------------------------------------------------------- log4j.rootCategory=INFO, A1, Daily #log4j.logger.com.dayangit=DEBUG log4j.logger.org.hibernate.hql.internal.ast.HqlSqlWalker=ERROR #------------------------------------------------------------------- #A1 system output log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%d{HH:mm:ss.SSS}] [%t] %m%n #------------------------------------------------------------------- # Daily log4j.appender.Daily.encoding=GBK log4j.appender.Daily=org.apache.log4j.DailyRollingFileAppender log4j.appender.Daily.File=/testSpringboot/testSpringboot.log log4j.appender.Daily.DatePattern="."yyyy-MM-dd log4j.appender.Daily.layout=org.apache.log4j.PatternLayout log4j.appender.Daily.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss.SSS}][%t]%m%n
这里还要说一下spring-boot-maven-plugin,这是为了将整个项目打包成可以直接运行的jar包,既然可以直接运行提供接口,也说明了springboot的另一个特性,内部自带tomcat。
pom.xml完成后,重新加载后就可以了。
第二步:建立需要用到的数据库表,及数据。上面application.properties中已经规定了数据库名,在此基础上新建自己要用到的表及数据。我这里的建表语句是
CREATE TABLE `testspringboot` ( `id` VARCHAR(36) NOT NULL, `name` VARCHAR(50) DEFAULT NULL, `text` VARCHAR(2000) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8
插入数据
insert into `testspringboot` (`id`, `name`, `text`) values("id1","zyk","哈哈哈哈哈哈哈哈哈哈"); insert into `testspringboot` (`id`, `name`, `text`) values("id2","yjh","呵呵呵呵呵呵呵呵呵呵呵呵");
到此数据库部分完成。
第三步:建立项目的各个模块,实现相应的逻辑。我这里就用了四个模块:bean,controller,service,dao,还有一个特殊的类SpringBootSampleApplication(名字不固定,但是要包含特定的main方法),
package com.zyk.testSpringboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Created by Administrator on 20171019 0019. */ @SpringBootApplication public class SpringBootSampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootSampleApplication.class, args); } }
我的理解这个类就是springboot的入口,程序的各个模块需要在这个类的目录结构的下一级,我的目录结构如图:
这里我只创建了一个实体类,对应数据库中的testspringboot表
package com.zyk.testSpringboot.bean; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * Created by Administrator on 20171019 0019. */ @Entity @Table(name="testspringboot") public class TestSpringboot { @Id private String id; private String name; private String text; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getText() { return text; } public void setText(String text) { this.text = text; } }
需要提一下的这里的注解,@Entity说明这个class是实体类,并且使用默认的orm规则,如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Id 注解可将实体Bean中某个属性定义为主键 ,@Table注解后,想要添加表中不存在字段,就要使用@Transient这个注解。
dao模块我只创建了一个接口:
package com.zyk.testSpringboot.dao; import com.zyk.testSpringboot.bean.TestSpringboot; import org.springframework.data.repository.CrudRepository; /** * Created by Administrator on 20171019 0019. */ public interface ShowDaoInterface extends CrudRepository{ }
这里需要说明的是,通过继承CrudRepository接口后,我们能够直接用springboot已经定义好的一些简单的增删改查方法。
service模块就是一个简单的调用方法,代码如下:
package com.zyk.testSpringboot.service; import com.zyk.testSpringboot.bean.TestSpringboot; import com.zyk.testSpringboot.dao.ShowDaoInterface; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * Created by Administrator on 20171019 0019. */ @Service public class ShowService { @Resource private ShowDaoInterface showDaoInterface; public String getDataById(String id) { TestSpringboot testSpringboot=showDaoInterface.findOne(id); return testSpringboot.getText(); } }
controller模块代码如下:
package com.zyk.testSpringboot.controller; import com.zyk.testSpringboot.service.ShowService; import net.sf.json.JSONObject; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Collections; import java.util.HashMap; /** * Created by Administrator on 20171019 0019. */ @RestController public class ShowController { @Resource private ShowService showService; @GetMapping("/getTextById") public ResponseEntity getText(@RequestParam String id) { if(id!=null) { String text=showService.getDataById(id); JSONObject jsonObject=new JSONObject(); jsonObject.put("text",text); return ResponseEntity.ok().body(jsonObject); }else { return ResponseEntity.badRequest().body(Collections.singletonMap("info","参数id为必填项")); } } }
至此,整个项目创建完成,然后就是启动测试了。
我是用的IDEA,启动命令 spring-boot:run,在IDEA上配置如图:
然后直接点击运行就可以了,记得访问接口时加上/testSpringboot。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67828.html
摘要:登录网站,生成一个基本的应用。目录结构如下由于生成的是,需要提前安装好工具。重新运行函数启动应用。目录结构如下将类放置到下面,重新启动应用,一切正常。至此,一个简单的基于的搭建完成。 1.登录网站https://start.spring.io/,生成一个基本的SpringBoot应用。 showImg(https://segmentfault.com/img/bVI6uh?w=1176...
摘要:喜欢学习新的技术和实现方案,挑战难点。第三层直接符合的。遇到的问题,也尽可能的去一起解决,减轻学习上的痛苦。学习完了,就得实战。当然也有我很多没有考虑到的,还需继续学习。在此期间,也可能会有更好,更有趣的想法在其中产生。 showImg(https://segmentfault.com/img/remote/1460000019521851); 有人说,Spring Boot的出现,让...
摘要:关于的自动配置,这个是重点之一,后面细说。在后续的学习中会慢慢学习到。红色标记的就是已经扫描到了并初始化成功了。 以下内容,如有问题,烦请指出,谢谢 springboot出来也很久了,以前零散地学习了不少,不过很长时间了都没有在实际中使用过了,忘了不少,因此要最近准备抽时间系统的学习积累下springboot,给自己留个根。 因为以前学过一些,这里就主要根据官方文档来学习了,可能会根据...
摘要:我们会写切面来拦截对这些业务类和类的调用。切面定义何时拦截一个方法以及做什么和在一起成为切面连接点当代码开始执行,并且切点的条件满足时,通知被调用。 前言 这篇文章会帮助你使用Spring Boot Starter AOP实现AOP。我们会使用AspectJ实现四个不同的通知(advice),并且新建一个自定义的注解来追踪方法的执行时间。 你将会了解 什么是交叉分割关注点(cross...
阅读 604·2023-04-26 01:53
阅读 2714·2021-11-17 17:00
阅读 2857·2021-09-04 16:40
阅读 1959·2021-09-02 15:41
阅读 795·2019-08-26 11:34
阅读 1206·2019-08-26 10:16
阅读 1297·2019-08-23 17:51
阅读 781·2019-08-23 16:50