idea ssm打war包_IDEA下从零开始搭建SpringBoot工程

SpringBoot的具体介绍可以参看其他网上介绍,这里就不多说了,就这几天的学习,个人理解,简而言之:
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
(1)它是Spring的升级版,Spring容器能做到的事情,它都能做到,而且更简便,从配置形式上来说,SpringBoot完全抛弃了繁琐的XML文件配置方式,而是替代性地用注解方式来实现,虽然本质来说,是差不多的(类似包扫描,注解扫描,类加载之类)。
(2)SpringBoot集成的插件更多,从而使用很多服务,都只是引入一个依赖,几个注解和Java类就可以用了,具体的参考相关手册。
(3)在Web应用开发这一块,之前的应用一般来说是打包成war包,再发布到相关服务器容器下(例如Tomcat),虽然SpringBoot也可以这么做,但在SpringBoot下更常见的形式是将SpringBoot应用打包成可执行jar包文件。之所以这么做,源于你可以直接将SpringBoot应用看成是一个Java Application,其Web应用可以没有webapp目录(更不用说web.xml了),它推荐使用html页面,并将其作为静态资源使用。
下面具体记录一下,如何在IDEA下从零开始,一步步搭建SpringBoot Web应用,这里采用的是maven作依赖管理,新手起步,有任何疑问,请参考SpringBoot官网。
需要说明的是SpringBoot依赖的JDK版本为1.8及以上。
(1)File->new,选择maven,创建一个空项目,直接next.

fb93b8370c4a154a9d8770a05d611286.png


(2)填写工程名

bf4a7b3578a112ad74c8861f491088e2.png


(3)next到底,成果创建一个基于maven的空Java项目,其目录结构是这样的:

5a2fda24c7be8af7a46b7a879a7570bc.png


如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
(4)在pom文件中引入SpringBoot相关依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
(5)新建一个controller 包,用于存放所有的controller,这里跟官方的一样,使用SampleController为第一个测试用例。代码如下:/** * Created by Song on 2017/2/15. * 官方示例工程中的测试代码 */ @Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
注意到,这里有一个main函数,再联想到前面说的,SpringBoot应用一般是打包成可执行jar包来发布的,这个main函数就是整个项目的入口。而之所以能这么做,是因为SpringBoot连Tomcat8作为一个插件都集成进去了,所以就不必跟之前的SSM架构下一样,还需要去在Tomcat下配置war包才能运行。直接点击运行该main函数,再浏览器链接栏,输入地址http://localhost:8080/,就可以看到打印的字符串”Hello World!”了。这就是官网提供的一个最基本的基于SpringBoot的Web应用,如此便捷。
当然,一个基本的Web应用,结构肯定不会这么简单。下面要说的是,如何在上面的基础上,搭建一个具有MVC结构的完整的Web应用,其中数据库采用的是Mysql,ORM采用的是Spring Data JPA,前端页面采用js+html5。(当然还有其他的方式,例如ORM框架采用mybatis等,本文暂未涉及。)
(6)在resource目录下新建一个application.properties文件(或yml文件),命名与位置为SpringBoot默认的配置文件。在该文件中,记录着所有的模块配置内容。例如Tomcat的端口(默认8080)以及编码方式等:
server.port=8080 server.tomcat.uri-encoding=utf-8
(7)引入本项目中所需要的相关依赖(MySQL连接驱动 以及Spring Data JPA,thymeleaf模板引擎)<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>1.4.0.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>1.5.1.RELEASE</version> </dependency>
(8)在application.properties中配置MySQL数据库连接信息
这里的数据库为本地数据库test,用户名和密码改成自己的#MySQL spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8 spring.datasource.username=**** spring.datasource.password=****
(9)在application.properties中配置Spring Data JPA
这一段的意思就是说,数据库类型为MYSQL,日志信息打印具体执行的sql语句,表更新策略以及Java类到数据库表字段的映射规则等,具体查看网络资料。#Spring Data JPA spring.jpa.database=MYSQL spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update # Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
(10)编写一个实体类User
@Table标签,指定数据库中对应的表名,id配置为主键,生成策略为自动生成/** * Created by Song on 2017/2/15. * Model 用户 */ @Entity @Table(name = "tbl_user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; private String password; }
(11)基于JPA,实现DAO层(即数据库数据的增删改查操作)
新建UserRepositoty.java接口文件,源代码如下:/** * Created by Song on 2017/2/15. * User表操作接口 */ @Repository public interface UserRepositoty extends JpaRepository<User,Long>{ @Query("select t from User t where t.name = :name") User findByUserName(@Param("name") String name); }
需要解释的是,Spring Data JPA提供了很多持久层接口,例如Repository,CrudRepositoty,PagingAndSortingRepository 以及JpaRepository 接口。其中Repository为基类,JpaRepository继承自PagingAndSortingRepository接口,两个泛型参数分别代表Java POJO类以及主键数据类型。我们创建自己的数据库操作接口时,只需继承上述JPA提供的某个接口,即可自动继承相关数据操作方法,而不需要再次实现。例如CrudRepositoty提供了对增删改查操作的实现,PagingAndSortingRepository提供了分页查询方法的实现。另外JPA提供了一套命名规则例如readBy**()等,这些方法也只需要用户申明而由JPA自动实现了。如果这仍不能满足业务需求,也可以自定义SQL查询语句,例如上述代码所示,采用@Query标签, 其中 :*语法为引用下面用@Param标识的变量,需要注意的是其中User不是表面而是Java POJO类名。具体使用参考JPA使用手册。
(12)设计Service层业务代码
新建UserService类,其源代码如下:/** * Created by Song on 2017/2/15. * User业务逻辑 */ @Service public class UserService { @Autowired private UserRepositoty userRepositoty; public User findUserByName(String name){ User user = ; try{ user = userRepositoty.findByUserName(name); }catch (Exception e){} return user; } }
(13)设计Controller层
新建UserController.java,提供两个接口,/user/index 返回页面,/user/show返回数据。其源代码如下:/** * Created by Song on 2017/2/15. * User控制层 */ @Controller @RequestMapping(value = "/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/index") public String index(){ return "user/index"; } @RequestMapping(value = "/show") @ResponseBody public String show(@RequestParam(value = "name")String name){ User user = userService.findUserByName(name); if( != user) return user.getId()+"/"+user.getName()+"/"+user.getPassword(); else return "null"; } }
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
(14)在application.properties文件中配置页面引擎。这里采用SpringMVC(SpringBoot还提供thymeleaf,freemaker等)。这里需要配置其静态资源(js、css文件、图片文件等)路径,以及html页面文件路径,参考SpringMVC在Spring下的配置。
#视图层控制
spring.mvc.view.prefix=classpath:/templates/ spring.mvc.view.suffix=.html spring.mvc.static-path-pattern=/static/**
(15)在resource目录下新建templates以及static目录,分别用于存放html文件以及(js、css文件、图片)文件。在(13)中返回了一个“user/index”页面,所以在templates下新建user目录,在user目录下新建index.html页面,这里就不写什么了,默认页面,通过相对路径引入js文件,js文件里只做示意,弹出一个alert()。
user/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <script src="../static/scripts/jquery.min.js"></script> <script src="../static/scripts/test.js"></script> <title>Title</title> </head> <h1>TEST PAGE</h1> <body> </body> </html>
static/scripts/test.js $(document).ready(function (){ alert("OK TEST"); });
(16)配置JPA
新建一个configuration包,用于存放项目配置类。类似SSM架构下,spring需要配置Java POJO类包路径以及DAO层接口路径,以自动扫描相关注解,这里同样需要配置这两项,不同的是Spring采取的是xml配置方式,这里用Java代码+注解方式配置。新建一个JpaConfiguration.java类,其代码如下:/** * Created by Song on 2017/2/15. * JPA 配置类 */ @Order(Ordered.HIGHEST_PRECEDENCE) @Configuration @EnableTransactionManagement(proxyTargetClass = true) @EnableJpaRepositories(basePackages = "com.song.repository") @EntityScan(basePackages = "com.song.entity") public class JpaConfiguration { @Bean PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){ return new PersistenceExceptionTranslationPostProcessor(); } }
(17)配置项目启动入口
到这一步就可以删掉(5)中官方示例给出的SampleController.java了,由于我们的工程结构已经发生了改变,我们需要告诉SpringBoot框架去扫描哪些包从而加载对应类,所以这里重新编写main函数。新建一个Entry.java类,其代码如下(其中@SpringBootApplication是一个复合注解,就理解为自动配置吧):/** * Created by Song on 2017/2/15. * 项目启动入口,配置包根路径 */ @SpringBootApplication @ComponentScan(basePackages = "com.song") public class Entry { public static void main(String[] args) throws Exception { SpringApplication.run(Entry.class, args); } }
(18)运行main函数,访问http://localhost:8080/user/index 会显示测试页面,并弹出alert(),访问http://localhost:8080/user/show?name=**(数据表里存在的数据)会显示user信息。最终的工程文件结构如下:

bfc14f7ca4f2198e7faf2fa4ffa6ab6e.png


欢迎工作一到八年的Java工程师朋友们加入Java高级交流:854630135
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题都可以在本群提出来 之后还会有直播平台和讲师直接交流噢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言一维数组转化为二维矩阵,js将一维数组转化为二维数组

遇到的问题&#xff1a;后端返回的是一组一维数组&#xff0c;但是需要展示的格式是二维数组&#xff0c;常见的场景举例&#xff1a;后台返回10个长度的数组&#xff0c;需要分成3个一组展示在banner上。例&#xff1a;[1,2,3,4,5,6,7,8,9,10] > [[1,2,3], [4,5,6], [7,8…

nano使用说明

Main nano help text The nano editor is designed to emulate 仿真、模拟 the functionality and ease-of-use of the UW Pico text editor. There are four main sections of the editor. The top line shows the program version, the current filename being edited, and w…

dataframe 众数的方法_学习数据分析数据方法论 [描述性统计分析]

数理统计&#xff1a;数理统计是以概率论为基础&#xff0c;研究社会和自然界中大量随机现象数量变化基本规律的一种方法。分为&#xff1a;描述统计(描述统计的任务是搜集资料&#xff0c;进行整理、分组&#xff0c;编制次数分配表&#xff0c;绘制次数分配曲线&#xff0c;计…

c语言高级语言期中测试答案,上海理工大学C语言2011期中试题和答案

C语言2010/2011学年 第二学期 期中测试高级语言程序设计(C)试卷 A □BA1. 输入一行字符&#xff0c;统计其中的英文字母个数。#include void main(){ char ch;int n0;printf(“Input a string:\n”);while(1){ chgetchar();if (ch \n ) break;if (ch> a && ch< z…

前端基础进阶(十):面向对象实战之封装拖拽对象

https://segmentfault.com/a/1190000012646488 https://yangbo5207.github.io/wutongluo/ 说明&#xff1a;此处只是记录阅读前端基础进阶的理解和总结&#xff0c;如有需要请阅读上面的链接 1.如何让元素动起来 要让元素动起来就要修改元素的top、left 、translate 属性。因为…

iOS - LocalCache 本地数据缓存

1、自定义方式本地数据缓存 1.1 自定义缓存 1 沙盒路径下的 Library/Caches 用来存放缓存文件&#xff0c;保存从网络下载的请求数据&#xff0c;后续仍然需要继续使用的文件&#xff0c;例如网络下载的离线数据&#xff0c;图片&#xff0c;视频文件等。该目录中的文件系统不会…

如何构建ASP.NET MVC4JQueryAJaxJSon示例

背景&#xff1a; 博客中将构建一个小示例&#xff0c;用于演示在ASP.NET MVC4项目中&#xff0c;如何使用JQuery Ajax。 直接查看JSon部分 步骤&#xff1a; 1&#xff0c;添加控制器(HomeController)和动作方法(Index),并为Index动作方法添加视图(Index.cshtml),视图中HTML如…

echarts 有引导线和内部文字_点、线、面构图的异同以及相互转化

点、线、面构图既有相似性&#xff0c;又有差异性。相似的是都有对齐、强调、群组、重复、突出层次的作用&#xff0c;不同的是点的特点是聚焦、线的特点是运动和方向性&#xff0c;面的特性是体量感、稳定性。点的情感最弱&#xff0c;线、面的情感要比点丰富。一、点、线、面…

c语言上机报告之水仙花数,C语言上机报告之水仙花数..doc

C语言上机报告之水仙花数.C语言程序设计上机报告课题名称&#xff1a;水仙花数的算法院 (系)&#xff1a;工程学院专业班 级&#xff1a; 052126学生姓名&#xff1a; 喻培学 号&#xff1a; 20121004040指导教师&#xff1a; 熊慕舟2013年11月24日C语言上机报告之水仙花数上机…

《Python黑帽子:黑客与渗透测试编程之道》 Web攻击

Web的套接字函数库&#xff1a;urllib2 一开始以urllib2.py命名脚本&#xff0c;在Sublime Text中运行会出错&#xff0c;纠错后发现是重名了&#xff0c;改过来就好&#xff1a; #!/usr/bin/python #codingutf-8 import urllib2url "http://www.baidu.com"headers …

vCenter Converter Standalone使用文档

文档目的能够使用vCenter Converter Standalone 将物理机操作系统迁移到虚拟机操作系统基础知识vCenter Converter Standalone 能将物理机上的操作系统、VMware虚拟机上的操作系统或者Hype-V 上的虚拟机操作系统迁移到VMware上。系统环境操作系统&#xff1a;Windows Server 20…

1093芯片做正弦波逆变器_正弦波逆变器中的SPWM调制(钟任生)

欢迎加入技术交流QQ群(2000人)&#xff1a;电力电子技术与新能源 905723370高可靠新能源行业顶尖自媒体在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验&#xff0c;欢迎关注我们&#xff0c;搜索微信公众号&#xff1a;电力电子技术…

android 手机短信恢复,安卓手机短信删除了怎么恢复?简单恢复的方法

原标题&#xff1a;安卓手机短信删除了怎么恢复&#xff1f;简单恢复的方法安卓手机短信删除了怎么恢复&#xff1f;手机短信是生活中不经常使用到&#xff0c;但是依然是十分重要的存在&#xff0c;因为我们现在比较喜欢用社交软件与别人进行交流&#xff0c;但是在一些相对重…

Oracle-查看oracle是否有表被锁

问题现象&#xff1a; 查看oracle是否有表被锁 解决方法&#xff1a; select sid,serial#,program,terminal,username,b.object_id,c.object_name from v$session a, v$locked_object b, dba_objects c where a.sid b.session_id and b.object_id c.object_id;转载于:http…

Python循环的一些基本练习

#1:# name input(请输入你的身份)# if name egon:# print(--> 超级管理员)# elif name tom:# print(--> 普通管理员)# elif name jack,rain:# print(--> 业务主管)# elif name 其他:# print(--> 普通用户)#2# today input(今天是星期几&…

bash下个人习惯的一些文件设置

2019独角兽企业重金招聘Python工程师标准>>> bash_profile export PATH/usr/local/bin:$PATH export EDITORviinputrc set editing-mode vi #set editing-mode emacs set show-all-if-ambiguous on set completion-ignore-case on set meta-flag on set conver…

docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

一、前言1、本文主要内容将在项目中实际使用到的相关东西整理记录一波&#xff0c;同时可以方便其他同学在使用到的时候参考一下(自己也备忘)&#xff0c;有不对的地方&#xff0c;欢迎指出~~Docker部署SpringBoot 项目通用Dockerfile文件、脚本Jenkins新建任务图文详解3、本文…

android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

在开发android应用程序时&#xff0c;有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应。譬如编写一个广播接收器&#xff0c;来提示用户有短信收到或者处理短信&#xff0c;就需要向该手机发送短信来进行测试。这里介绍一种简单的向android模拟器打电话发短…

android 隐藏键盘时ui延迟恢复,android 软键盘的显示与隐藏问题的研究

在android中&#xff0c;常常会和输入法的软件键盘交互。在Manifest文件中&#xff0c;系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式。该属性提供了Activity的window与软键盘的window交互的方式。这里的属性设置有双方面的影响&#xff1a;1.软键盘的显…

天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...

《天才基本法》——长洱小说文案元宝的书评这个真的是本年度的神仙小说&#xff0c;讲述了女主回到少女时代&#xff0c;可以和他一直暗恋的数学天才重来一遍。女主让男主改变了觉得她碌碌无为的看法&#xff0c;也改变了自己的人生。本书最大的主角其实是数学&#xff01;天知…