Spring boot基础文档.docx

上传人:b****6 文档编号:15339164 上传时间:2023-07-03 格式:DOCX 页数:20 大小:23.46KB
下载 相关 举报
Spring boot基础文档.docx_第1页
第1页 / 共20页
Spring boot基础文档.docx_第2页
第2页 / 共20页
Spring boot基础文档.docx_第3页
第3页 / 共20页
Spring boot基础文档.docx_第4页
第4页 / 共20页
Spring boot基础文档.docx_第5页
第5页 / 共20页
Spring boot基础文档.docx_第6页
第6页 / 共20页
Spring boot基础文档.docx_第7页
第7页 / 共20页
Spring boot基础文档.docx_第8页
第8页 / 共20页
Spring boot基础文档.docx_第9页
第9页 / 共20页
Spring boot基础文档.docx_第10页
第10页 / 共20页
Spring boot基础文档.docx_第11页
第11页 / 共20页
Spring boot基础文档.docx_第12页
第12页 / 共20页
Spring boot基础文档.docx_第13页
第13页 / 共20页
Spring boot基础文档.docx_第14页
第14页 / 共20页
Spring boot基础文档.docx_第15页
第15页 / 共20页
Spring boot基础文档.docx_第16页
第16页 / 共20页
Spring boot基础文档.docx_第17页
第17页 / 共20页
Spring boot基础文档.docx_第18页
第18页 / 共20页
Spring boot基础文档.docx_第19页
第19页 / 共20页
Spring boot基础文档.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Spring boot基础文档.docx

《Spring boot基础文档.docx》由会员分享,可在线阅读,更多相关《Spring boot基础文档.docx(20页珍藏版)》请在冰点文库上搜索。

Spring boot基础文档.docx

Springboot基础文档

在IDEA环境下创建一个Springboot程序

 一、点击NewProject后,选择SpringInitializr。

如下图所示,此时,如果右侧你的JDK自动出现了,那可以省很多事。

如果没有自动出现,则需要你点击New,去选择你JAVA的安装目录。

(为什么需要这样?

因为Spring的运行需要JAVA,所以IDE需要知道你的JAVA安装目录。

二、进入下一步后,会让你设置一下你工程的名字等基本信息。

三、然后这个界面比较重要,它的作用是在开始的时候,自动下载一些jar包。

你勾选一个,他就会自动下载。

请按照需求勾选。

四、填写工程名

 五、OK,现在Intellij就自动为我们创建好一个Springboot的程序了哦~如下图所示:

Springboot写一个Helloworld

现在开始写第一个HelloWorld~看下图:

上图中的com.example是一个包名,为了代码可读性高,我们会使用MVC的开发模式,在com.example这个包下面,再新建几个包,分别用来写不同的代码。

需要新建的包如下:

1.controller包:

用来写控制器代码,控制器对应不同的请求,是网络请求的第一层。

2.model包:

里面每个class可以对应一个数据表,当你写好class,并且运行工程时,Springboot和Hibernate会自动为你在数据库里创建表。

3.repository包:

这里封装了所有对数据表的增删改查操作。

以后你需要操作数据库,其实就是使用这里的接口。

4.service包:

比如把登录、注册等一个完整的逻辑,封装为一个service,供controller调用,可以极大地简化开发,同时代码也具有更高的可读性。

下面,让我们来建立这四个包吧~在com.example这个包上右键,然后new一个包出来。

如图所示:

我这里创建好包名后,目录结构是这样的:

好了,到这一步,我们终于可以开始写代码啦~~~在本文里,我们将不会用到service、model、repository,只会用到controller来写一个简单的HelloWorld。

让我们开始写吧:

首先,在controller这个包上点击右键,新建一个class,名字就叫nana,如下图所示:

建立好文件后,我们在这个文件里输入以下的代码:

【注意,如果没有严格按照前面的教程来,你的包名可能和我的不一样,所以这个代码复制过去后,请自己检查一遍!

package ;

import ;

import ;

import ;

import ;

/**

 * Created by longge93 on 16/4/14.

 */

@RestController

@EnableAutoConfiguration

public class nana {

    @RequestMapping(value="/",method = RequestMethod.GET)

    public String index(){

        return "Hello World~";

    }

}

然后我们来运行以下我们的工程,运行方法如下图所示:

如上图所示,点击那个三角形,就可以运行我们的工程了。

不过,所有写代码的过程都是不顺利的~~虽然我们点了运行,但是下面的控制台里却提示我们运行失败了,从上图的下面看出,是hibernate出错了。

为什么呢?

因为我们在Maven里包含了MySQL的jar包,但是却没有配置数据库连接需要的账号和密码等信息。

所以hibernate会报错~~因为我们这篇文章里,只是为了输出helloworld,用不着数据库。

所以我们先去pom文件里注释掉数据库相关的jar包应该就OK了。

我注释完后,我的pom文件是这样的,请仔细检查:

xml version="1.0" encoding="UTF-8"?

>

xsi="/XMLSchema-instance"

   xsi:

schemaLocation="/4.0.0 /maven-">

   

   com.example

   demo

   

   jar

   demo

   Demo project for Spring Boot

   

      

      spring-boot-starter-parent

      

       

-- lookup parent from repository -->

   

   

      <

      1.8

   

   

      

         

         spring-boot-starter-aop

      

      

---->

         

--

         

--spring-boot-starter-data-jpa-->

      

---->

      

---->

         

--

         

--spring-boot-starter-jdbc-->

      

---->

      

---->

         

--

         

--spring-boot-starter-redis-->

      

---->

      

         

         spring-session

      

      

         

         spring-boot-starter-thymeleaf

      

      

         

         spring-boot-starter-web

      

      

---->

         

--mysql-->

         

--mysql-connector-java-->

         

--runtime-->

      

---->

      

         

         spring-boot-starter-test

         test

      

   

   

      

         

            

            spring-boot-maven-plugin

         

      

   

此时,依然报错:

CannotdetermineembeddeddatabasedriverclassfordatabasetypeNONE

解决办法:

注释掉pom文件中jap和session,在完成以后,pom配置如下

xml version="1.0" encoding="UTF-8"?

>

xsi="/XMLSchema-instance"

   xsi:

schemaLocation="/4.0.0 /maven-">

   

   com.example

   demo

   

   jar

   demo

   Demo project for Spring Boot

   

      

      spring-boot-starter-parent

      

       

-- lookup parent from repository -->

   

  

<

<

1.8

        

spring-boot-starter-aop

spring-boot-starter-web

spring-boot-starter-test

test

spring-boot-starter-thymeleaf

spring-boot-maven-plugin

然后我们再点击那个三角形运行,你会发现运行成功啦~~如下图所示:

因为Springboot其实已经自带Tomcat了,所以当我们把这个工程跑起来后,其实就相当于跑起来一个网站。

现在让我们去网页里看看我们的HelloWorld有没有正常工作吧~

在浏览器里,打开,你会发现输出了HelloWorld~~

来源:

 /5cafb22d-351b-13b5-01e4-c260f480debf.html

Springboot在Springmvc下接入微信

  在我们搭建好Springboot环境后,可以很容易的使用Springmvc,不需要复杂的配置,只需要做一些基本的注解就行了。

这一章讲述如何在Springmvc下去接入微信。

一、接入微信需要一个公网IP,这里我们使用的是ngrock内网穿透工具。

    运行--》cmd,进入ngrock解压目录,输入命令ngrok-subdomain yxpeng -config=ngrok.cfg 8080

    其中yxpeng是可以自己配置的子域名,8080端口通常设置为你的项目运行的端口,因为我这边默认的是8080,所以我设置成了8080.

 二、与用servlet接入微信一样的,我们需要接受到微信后台通过get请求传过来的几个参数。

  首先,写了一个model,其中封装了这四个参数。

package ;

/**

*微信接入校验信息model

*CreatedbyAdministratoron2016/11/80008.

*/

publicclassCheckModel{

privateStringsignature;

privateLongtimestamp;

privateLongnonce;

privateStringechostr;

publicStringgetSignature(){

returnsignature;

}

publicvoidsetSignature(Stringsignature){

this.signature=signature;

}

publicLonggetTimestamp(){

returntimestamp;

}

publicvoidsetTimestamp(Longtimestamp){

this.timestamp=timestamp;

}

publicLonggetNonce(){

returnnonce;

}

publicvoidsetNonce(Longnonce){

this.nonce=nonce;

}

publicStringgetEchostr(){

returnechostr;

}

publicvoidsetEchostr(Stringechostr){

this.echostr=echostr;

}

}

  创建一个controller类,其中添加一个validate方法,用来接收这个model并进行处理

package;

import;

import;

import;

import;

import;

import;

import;

import;

/**

*CreatedbyAdministratoron2016/11/90009.

*/

@RestController

@RequestMapping("/user")

@EnableAutoConfiguration

publicclassUserController{

@Autowired

privateUserServiceuserService;

@RequestMapping("/check/{name}")

public@ResponseBodyStringaddUser(@PathVariable("name")Stringname){

Useruser=newUser();

user.setUserName(name);

user.setPassword("123");

user.setRealName("喻学鹏");

userService.saveUser(user);

returnuser.getUserName();

}

@RequestMapping("/find/{name}")

public@ResponseBodyStringfindUserByName(@PathVariable("name")Stringname){

Useru=null;

u=userService.findByUserName(name);

if(u!

=null){

returnu.getRealName();

}else{

return"未找到";

}

}

}

  在tokenService中,分离出这四个参数,然后对token,timestamp和nonce这三个参数进行字典排序,然后进行SHA1加密,将密文与signature对比,如果相同就返回echostr.

package;

import;

import;

import;

import;

import;

/**

*CreatedbyAdministratoron2016/11/80008.

*/

@Service

publicclassTokenService{

/**

*微信接入数据验证

*@paramwxToken

*@paramtokenModel

*@return

*/

@Transactional

publicStringvalidate(StringwxToken,CheckModeltokenModel){

Stringsignature=tokenModel.getSignature();

Longtimestamp=tokenModel.getTimestamp();

Longnonce=tokenModel.getNonce();

Stringechostr=tokenModel.getEchostr();

if(signature!

=null&×tamp!

=null&nonce!

=null){

String[]str={wxToken,timestamp+"",nonce+""};

Arrays.sort(str);//字典序排序

StringbigStr=str[0]+str[1]+str[2];

//SHA1加密

Stringdigest=EncoderHandler.encode("SHA1",bigStr).toLowerCase();

//确认请求来至微信

if(digest.equals(signature)){

//最好此处将echostr存起来,以后每次校验消息来源都需要用到

returnechostr;

}

}

return"error";

}

}

三、登录微信公众平台

开发--》基本配置

 填写好URL和token后,点击提交,微信后台就会想填写好的URL发送GET请求。

如果校验无误,就会提示接入成功。

JpaRepository

来源:

 /2088265

什么是Repository?

 

2.1Repository(资源库):

通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调。

这个叫法就类似于我们通常所说的DAO,在这里,我们就按照这一习惯把数据访问层叫Repository 

SpringData给我们提供几个Repository,基础的Repository提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。

它们的继承关系如下:

 

Repository:

仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别 

CrudRepository:

继承Repository,实现了一组CRUD相关的方法 

PagingAndSortingRepository:

继承CrudRepository,实现了一组分页排序相关的方法 

JpaRepository:

继承PagingAndSortingRepository,实现一组JPA规范相关的方法 

JpaSpecificationExecutor:

比较特殊,不属于Repository体系,实现一组JPACriteria查询相关的方法 

我们自己定义的XxxxRepository需要继承JpaRepository,这样我们的XxxxRepository接口就具备了通用的数据访问控制层的能力。

 

2.2JpaRepository所提供的基本功能 

2.2.1CrudRepository

 

这个接口提供了最基本的对实体类的添删改查操作 

Tsave(Tentity);//保存单个实体 

       Iterablesave(Iterable

extendsT>entities);//保存集合 

       TfindOne(IDid);//根据id查找实体 

       booleanexists(IDid);//根据id判断实体是否存在 

       IterablefindAll();//查询所有实体,不用或慎用!

 

       longcount();//查询实体数量 

       voiddelete(IDid);//根据Id删除实体 

       voiddelete(Tentity);//删除一个实体 

voiddelete(Iterable

extendsT>entities);//删除一个实体的集合 

       voiddeleteAll();//删除所有实体,不用或慎用!

 

2.2.2PagingAndSortingRepository 

这个接口提供了分页与排序功能 

IterablefindAll(Sortsort);//排序 

       PagefindAll(Pageablepageable);//分页查询(含排序功能) 

2.2.3JpaRepository 

这个接口提供了JPA的相关功能 

ListfindAll();//查找所有实体 

       ListfindAll(Sortsort);//排序查找所有实体 

       Listsave(Iterable

extendsT>entities

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2