当前位置: 首页 > 编程日记 > 正文

springboot初学

首先苦于用ssh、ssm来搭建一个项目,这个基础搭建工作就大概要用半天的功夫才能弄好,想到就头疼,后面听了实验室一位大神的建议,用springboot啊,简单的不止一点点。就顺便学习了下这个神器,果然厉害。

有一次上课,跟同学聊天,他问我web的服务器都部署在哪里了,我说centos啊,部署了好多个,然后对方回复,那你得好好保护你电脑了,如果电脑宕机了,你的linux上的服务器需要全部重新部署了。这个问题的确很严重,搭建一个redis、tomcat、nginx、solr虽然不是太麻烦,但是也需要耗费很多时间,怎么办呢?偶然看到一篇文章:docker。docker可以解决这些问题。

就学习了下docker,果然,用同学的话,什么安装软件什么的,都是浮云。用docker搞定。

今天我们介绍下springboot:

1.springboot是什么?

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 
该框架使用了特定的方式(继承starter,约定优先于配置)来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 
Spring Boot并不是一个框架,从根本上将,它就是一些库的集合,maven或者gradle项目导入相应依赖即可使用Spring Boot,而且无需自行管理这些库的版本。

2、为什么要用springboot?

Spring Boot是为简化Spring项目配置而生,使用它使得jar依赖管理以及应用编译和部署更为简单。Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性。 
使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用,并且内置了tomcat,构建的fat Jar包通过Java -jar就可以直接运行。 
如下特性使得Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端:

  • 一个可执行jar即为一个独立服务
  • 很容易加载到容器,每个服务可以在自己的容器(例如docker)中运行
  • 通过一个脚本就可以实现配置与部署,很适合云端部署,并且自动扩展也更容易

简单而言,即Spring Boot使编码更简单,使配置更简单,使部署更简单,使监控更简单。

优势:项目搭建方便简单快速,省时又省力。

3、springboot项目的创建?

项目创建的方式有两种:

先说一下插件的安装:

这里使用的eclipse最新版Neon,因为之前的版本安装springboot插件失败。所以都是采用最新的,JDK1.8,tomcat9,maven3.9.

关于插件的安装,我们可以可以百度一下网上有很多,这里采用的是直接从eclipse market中查找STS来安装的。

之前安装遇到的问题:使用eclipse luna版本安装了sts后,与maven冲突,直接导致maven不可用。

插件安装好了后,会再导航栏有个绿色的叶子,就是springboot。

接下来就是如何搭建一个springboot项目了:

(1)使用springboot来搭建:

完成后:

这个是自动生成的pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mydemo.springboot</groupId><artifactId>mydemo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mydemo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.8.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

以上是第一种方式创建pringboot项目。

(2)首先创建一个maven项目,然后在pom文件中添加springboot依赖即可。直接将上面的pom文件拷贝一份即可。

需要注意点 问题:搭建项目的时候,项目的入口包必须是父包,其下面的controller、service、dao等等都是其下的子包。

否则项目是无法扫描到下面的文件的。

4、springboot与mybatis整合?

之前spring与mybatis整合非常的麻烦,配置文件一堆,这里springboot将这些都集成的非常好,非常简便的就可以整合了。

分几步来进行:

(1)添加springboot与mybatis的jar:

(2)编写配置文件:这里的配置都是在创建项目的时候springboot自带的那个application.properties,名字不能写错,否则会读取不到。

(3)编写mapper.xml和mapper文件:

这里出现的问题:因为sqlMapConfig导致的项目报错:

其实这里面什么都不用配置即可,因为配置都在外面进行了,那为什么还需要这个文件呢,因为我们避免以后还有相关的配置,比如分页等等。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>

注意:配置文件都是放在source文件下面的,这样才可以读取到,否则是不行的。

关于mapper的读取,我们采用@Mapper注解的方式可以读取大mapper文件。

后面的代码编写跟之前一样了。

这就是spring与mybatis的整合。

5、springboot与redis单机版整合?

看到上面的整合,是不是很感慨为什么没有那么早遇到springboot呢。接下来与redis的整合更简单,只需要简简单单的几个注解就OK了。

(1)添加jar包:

这里出现了一个小问题,提示spring-data-redis需要这个jar包,当时maven项目上面有个红色的叹号(注意:以后遇到这个问题可能就是jar包版本的问题)可是当我添加到pom文件中时,项目依然启动错误。

这类问题的解决方案:

找到maven的本地仓库,将提示的jar包从仓库中删除,然后更新项目,获取新的jar包即可解决。

(2)如何使用redis呢:

配置文件中指的redis的ip和端口:

这样redis就可以使用了,是不是非常的简单啊。

以上就是关于springboot的一些使用,简单快捷方便。

最后:除了上面的几个问题,还有一个需要注意,就是在项目的 入口中,

这个配置是必须的,如果不加这个,则下面的一切工作白费,因为这个注解支持自动扫描和注解的功能。

转载于:https://www.cnblogs.com/fengli9998/p/6866485.html

相关文章:

Exchange 2013与OWA13集成

好久没发新文章了&#xff0c;因为工作变动的原因&#xff0c;实在抱歉&#xff0c;今天给大家分享先office web app 2013怎么和最新的Exchange 2013进行集成使用吧&#xff0c;这点还是蛮有特色的&#xff0c;因为我们改变以往在OWA中预览Office的效果&#xff0c;我们先看看默…

判断一个string是否可以为数字

方案一&#xff1a;Try...Catch(执行效率不高)/// <summary>/// 名称&#xff1a;IsNumberic/// 功能&#xff1a;判断输入的是否是数字/// 参数&#xff1a;string oText&#xff1a;源文本/// 返回值&#xff1a; bool true:是 false:否/// </summary>/// <…

CSDN湘苗培优|火热报名中

湘苗培优火热报名中CSDN高校俱乐部在这里&#xff0c;你能获得CSDN技术认证与企业导师零距离技术交流参与线下技术沙龙活动求职简历指导参与项目交付并有机会企业内推现在报名即可选择由企业支付学费的订单式培养&#xff0c;或入职后再支付学费等多种付费模式&#xff0c;Z大程…

安装配置Emacs-rails

首先你的机器上肯定要安装emacs啦&#xff0c;此步略过不表。1、从 http://rubyforge.org/projects/emacs-rails 下载最新emacs-rails&#xff0c;解压文件到~/.emacs.d/rails 目录2、根据README&#xff0c;你需要下载三个依赖库&#xff1a;cd ~/.emacs.d/rails wget http://…

实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化

来源 | 早起Python大家好&#xff0c;在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序&#xff0c;很多本文将迎合热点&#xff0c;延续上次的NBA爬虫GUI&#xff0c;探讨如何爬取虎扑NBA官网数据&#xff0c;并且将数据写入Excel中同时自动生成折线图&#xff0c;主要…

删除SQL数据库中事务日志方法

DUMP TRANSACTION [数据库名] WITH NO_LOG BACKUP LOG [数据库名] WITH NO_LOG DBCC SHRINKDATABASE([数据库名])

新浪微博应用 IE下面框架嵌套框架的问题解决

新浪微博应用 IE下面框架嵌套框架的问题分为两种&#xff1a;1、回调的参数有误&#xff1b;2、session丢失&#xff1b;第一个问题&#xff0c;需要亲们仔细研读接口文档&#xff0c;App.AuthDialog.show({client_id : <?php echo $this->getParam(sub_appkey);?>,…

corosync+pacemaker+crm简单配置

# 系统 centos7.2 安装版本都是Yum源node1: 192.168.8.111 node2:192.168.8.112 vip :192.168.8.200nfs :192.168.8.113 # 互信~] ssh-keygen~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys~]# chmod go .ssh/authorized_keys~]# scp -p .ssh/i…

给AI系统做“安全体检”,阿里安全提出自动化AI对抗平台CAA | AAAI 2021

出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;安全人员曾为某车企自动驾驶系统做过一次安全测试&#xff0c;用物理对抗攻击欺骗Autopilot车道检测系统&#xff0c;导致汽车在Autopilot不发出警告的情况下驶入错误车道。假如这是一场真实的攻击&#xf…

linux新建文件权限问题

touch /etc/init.d/httpdchmod 755 /etc/init.d/httpdtouch可以新建一个空文件&#xff0c;可以修改文件的创建时间。比如&#xff1a;编译时看到提示文件的时间为将来的时间&#xff0c;可以使用touch命令来修改。Linux chmod 755和chmod 777 在linux终端先输入ls -al,可以看到…

基于MMSeg算法的中文分词类库

最近在实现基于lucene.net的搜索方案&#xff0c;涉及中文分词&#xff0c;找了很多&#xff0c;最终选择了MMSeg4j&#xff0c;但MMSeg4j只有Java版&#xff0c;在博客园上找到了*王员外*(http://www.cnblogs.com/land/archive/2011/07/19/mmseg4j.html )基于Java版的翻译代码…

关于git bush 中不能复制黏贴的问题

如果你是一个新手的话&#xff0c;在你使用个git的过程中&#xff0c;你会发现git 竟然不能复制黏贴&#xff0c;这简直是完全不能忍受的事&#xff0c;复制黏贴可以大大的节省了我们敲代码的时间&#xff0c;特别是在github中clone别人的仓库到本地&#xff0c;url地址需要一个…

linux系统proc目录进程信息详解

Proc 文件系统是一个实时的&#xff0c;常驻内存的文件系统&#xff0c;它跟踪进程在你机器上的运行情况和你系统的状态。/proc文件系统是常驻虚拟内存并且维持着操作系统的动态数据。大部分的 /proc文件系统信息被实时更新来与当前操作系统的状态一致。/proc文件系统的内容能被…

AI开源评测基准AI-Rank,为开源建立标准

当前&#xff0c;数字经济已经成为经济发展的活力引擎和促进经济结构转型升级的重要动能&#xff0c;深刻改变着人类的生产生活方式。12月11日&#xff0c;2020中关村大数据日暨数字经济融合创新发展论坛在北京举行。本届中关村大数据日以“开源共享 生态赋能”为主题&#xff…

Linux 汇编语言开发指南

Linux 汇编语言开发指南肖文鹏 (xiaowp263.net), 北京理工大学计算机系硕士研究生本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生&#xff0c;主要从事操作系统和分布式计算环境的研究&#xff0c;喜爱Linux和Python。你可以通过 xiaowp263.net与他取得联系。 简介&am…

拦截器与filter的区别

在接触拦截器和filter以来&#xff0c;觉得这两者有太多相似之处&#xff0c;都是运用aop的思想处理事情&#xff0c;但是这两者到底有什么区别倒一直很模糊&#xff0c;今天看书的时候&#xff0c;终于看到自己满意的解答了&#xff0c;赶紧记录下来&#xff1a;1.使用范围不同…

湘苗培优 | 从入门到精通

缘起2020年长沙发出软件再出发号召&#xff0c;同时发布了《长沙市软件和信息技术服务业发展三年(2020-2022 年)行动计划》。当软件产业的生态逐渐建立&#xff0c;企业孵化培育的土壤逐渐肥沃&#xff0c;长沙软件产业焕发出前所未有的活力和生机&#xff0c;一大批软件产业项…

HBase scan setBatch和setCaching的区别

2019独角兽企业重金招聘Python工程师标准>>> HBase的查询实现只提供两种方式&#xff1a; 1、按指定RowKey获取唯一一条记录&#xff0c;get方法&#xff08;org.apache.hadoop.hbase.client.Get&#xff09; 2、按指定的条件获取一批记录&#xff0c;scan方法&…

3行Python代码就能获取海量数据?

一谈起数据分析&#xff0c;首先想到的就是数据&#xff0c;没有数据&#xff0c;谈何分析。毕竟好的菜肴&#xff0c;没有好的原材料&#xff0c;是很难做的&#xff5e;所以本期小F就给大家分享一个获取数据的方法&#xff0c;只需三行代码就能搞定。「GoPUP」&#xff0c;大…

c语言中int和指针和字符所占字节

Linux下 sizeof(int);int 4字节 sizeof(char);字符1字节 char * p"12345"; sizeof(p);指针占4字节

SCCM 2012 SP1系列(七)分发部署exe软件

2、exe软件分发以skydrive为例&#xff0c;打开SCCM控制台&#xff0c;展开应用程序管理&#xff0c;右键“包”选择“创建包”打开创建包和应用程序向导&#xff0c;填写部署包的相关信息&#xff0c;勾选“此包包含源文件”&#xff0c;然后点击“浏览”选择sykdrive文件位置…

关于勒索病毒的防御

关于勒索病毒的防御Windows的445漏洞与139漏洞由来已久&#xff0c;大面积暴发只是迟早的事情。关于防御方法其实也有很多&#xff0c;早就满地都是了。但是快速、大量、不断网的部署防御却不容易。比如使用端口排除、删除文件与打印共享服务、修改注册表、使用防火墙、以及组策…

linux的根文件系统中的proc文件夹详解

什么是proc文件系统 |linux /proc目录介绍&#xff5c;proc中文手册proc文件系统是一个伪文件系统&#xff0c;它只存在内存当中&#xff0c;而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息&#xff0c;…

学习C语言必须知道的理论知识(第一章)

计算机语言:人和计算机都能识别的语言。 程序:就是一组计算机能识别和执行的指令叫做程序。 程序设计:从确定任务到得到结果&#xff0c;写出文档的全过程。 机器指令&#xff1a;计算机能直接识别和接受的二进制代码称为机器指令&#xff08;machine instruction&#xff09; …

赠书 | 实现病人数据自动分析建模,Python能做的比你想象得更多

者 | 李秋键责编 | 晋兆雨头图 | CSDN下载自视觉中国*文末有赠书福利数据表格整理等作为我们工作学习生活中最为繁琐和无趣的任务之一&#xff0c;消耗掉了我们的大多数时间。而今天我们就将利用Python对病人数据进行建模&#xff0c;并自动生成表单&#xff0c;从而节省了我们…

Java中元组的使用

元组在计算机领域有着特殊的意义&#xff0c;这个名字听起来似乎有些陌生&#xff0c; 平时在写代码也基本没什么应用场景&#xff0c; 然而&#xff0c; 出人意料的是&#xff0c; 元组跟程序设计密切相关&#xff0c; 可能有的同学不知道&#xff0c; 关系数据库中的「纪录」…

「修炼开始」一文带你入门深度学习

来源 | Jack Cui责编 | Carol封图 | CSDN下载自视觉中国前言图解 AI 算法系列教程&#xff0c;不仅仅是涉及深度学习基础知识&#xff0c;还会有强化学习、迁移学习等&#xff0c;再往小了讲就比如拆解目标检测算法&#xff0c;对抗神经网络&#xff08;GAN&#xff09;等等。难…

Lucene.net中文分词探究

一、中文分词方式&#xff1a; 中文分词几种常用的方式&#xff1a; A&#xff0e; 单字分词 单字分词&#xff0c;顾名思义&#xff0c;就是按照中文一个字一个字地进行分词。如&#xff1a;我们是中国人&#xff0c;效果&#xff1a;我/们/是/中/国/人。 B&#xff0e; …

httpd服务相关实验

实验环境&#xff1a; CentOS6.8 1、连接测试&#xff1a; 在/etc/httpd/conf/httpd.conf telnet 172.16.252.242 80 GET /index.html HTTP/1.1 Host: 172.16.252.242 # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection).…

WMI使用集锦

1.WMI简介WMI是英文Windows Management Instrumentation的简写&#xff0c;它的功能主要是&#xff1a;访问本地主机的一些信息和服务&#xff0c;可以管理远程计算机&#xff08;当然你必须要拥有足够的权限&#xff09;&#xff0c;比如&#xff1a;重启&#xff0c;关机&…