springboot基础文档.docx

上传人:b****8 文档编号:11128572 上传时间:2023-02-25 格式:DOCX 页数:25 大小:519.54KB
下载 相关 举报
springboot基础文档.docx_第1页
第1页 / 共25页
springboot基础文档.docx_第2页
第2页 / 共25页
springboot基础文档.docx_第3页
第3页 / 共25页
springboot基础文档.docx_第4页
第4页 / 共25页
springboot基础文档.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

springboot基础文档.docx

《springboot基础文档.docx》由会员分享,可在线阅读,更多相关《springboot基础文档.docx(25页珍藏版)》请在冰豆网上搜索。

springboot基础文档.docx

springboot基础文档

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

 一、点击NewProject后,选择SpringInitializr。

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

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

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

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

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

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

请按照需求勾选。

四、填写工程名

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

Springboot写一个Helloworld

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

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

需要新建的包如下:

1.controller包:

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

2.model包:

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

3.repository包:

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

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

4.service包:

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

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

如图所示:

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

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

让我们开始写吧:

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

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

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

package      * Created by longge93 on 16/4/14.

 */

@RestController

@EnableAutoConfiguration

public class nana {

    @RequestMapping(value="/",method = 

    public String index(){

        return "Hello World~";

    }

}

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

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

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

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

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

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

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

xsi=""

   xsi:

schemaLocation=" ">

      

   demo

      jar

   demo

   Demo project for Spring Boot

   

            spring-boot-starter-parent

             

-- lookup parent from repository -->

   

   

      <      <>

   

   

      

                  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配置如下

xsi=""

   xsi:

schemaLocation=" ">

      

   demo

      jar

   demo

   Demo project for Spring Boot

   

            spring-boot-starter-parent

             

-- lookup parent from repository -->

   

  

<<<>

        

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~~

来源:

 boot在Springmvc下接入微信

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

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

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

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

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

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

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

package 

/**

*微信接入校验信息model

*CreatedbyAdministratoron2016/11/80008.

*/

publicclassCheckModel{

privateStringsignature;

privateLongtimestamp;

privateLongnonce;

privateStringechostr;

 

publicStringgetSignature(){

returnsignature;

}

publicvoidsetSignature(Stringsignature){

=signature;

}

publicLonggetTimestamp(){

returntimestamp;

}

publicvoidsetTimestamp(Longtimestamp){

=timestamp;

}

publicLonggetNonce(){

returnnonce;

}

publicvoidsetNonce(Longnonce){

=nonce;

}

publicStringgetEchostr(){

returnechostr;

}

publicvoidsetEchostr(Stringechostr){

=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();

(name);

("123");

("喻学鹏");

(user);

return();

}

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

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

Useru=null;

u=(name);

if(u!

=null){

return();

}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=();

Longtimestamp=();

Longnonce=();

Stringechostr=();

if(signature!

=null&×tamp!

=null&nonce!

=null){

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

(str);oLowerCase();

                                               +"=:

username"), 

       @NamedQuery(name="getUsernamePasswordToken", 

                       query="selectnewfromUseruwhereu."+ 

                           +"=:

username")}) 

(2)在interface中定义与

(1)对应的方法 

publicinterfaceUserRepositoryextendsJpaRepository

 ListfindByLastname(Stringlastname); 

 UserfindByEmailAddress(StringemailAddress); 

使用@Query自定义查询(SpringData提供的) 

这种查询可以声明在Repository方法中,摆脱像命名查询那样的约束,将查询直接在相应的接口方法中声明,结构更为清晰,这是Springdata的特有实现。

 

例如:

 

publicinterfaceUserRepositoryextendsJpaRepository

 @Query("selectufromUseruwhere=1") 

 UserfindByEmailAddress(StringemailAddress); 

@Query与@Modifying执行更新操作 

这两个annotation一起声明,可定义个性化更新操作,例如只涉及某些字段更新时最为常用,示例如下:

 

@Modifying 

@Query("updateUseruset=1where=2") 

intsetFixedFirstnameFor(Stringfirstname,Stringlastname); 

索引参数与命名参数 

(1)索引参数如下所示,索引值从1开始,查询中”X”个数需要与方法定义的参数个数相一致,并且顺序也要一致 

@Modifying 

@Query("updateUseruset=1where=2") 

intsetFixedFirstnameFor(Stringfirstname,Stringlastname); 

(2)命名参数(推荐使用这种方式) 

可以定义好参数名,赋值时采用@Param("参数名"),而不用管顺序。

如下所示:

 

publicinterfaceUserRepositoryextendsJpaRepository

 @Query("selectufromUseruwhere=:

firstnameor=:

lastname") 

 UserfindByLastnameOrFirstname(@Param("lastname")Stringlastname, 

                                @Param("firstname")Stringfirstname); 

4.Transactionality(事务) 

操作单个对象的事务 

SpringData提供了默认的事务处理方式,即所有的查询均声明为只读事务,对于持久化,更新与删除对象声明为有事务。

 

参见ID> 

@Transactional(readOnly=true) 

publicclassSimpleJpaRepositoryimplementsJpaRepository

               JpaSpecificationExecutor

…… 

@Transactional 

       publicvoiddelete(IDid){ 

               delete(findOne(id)); 

       } 

…… 

对于自定义的方法,如需改变springdata提供的事务默认方式,可以在方法上注解@Transactional声明 

涉及多个Repository的事务处理 

进行多个Repository操作时,也应该使它们在同一个事务中处理,按照分层架构的思想,这部分属于业务逻辑层,因此,需要在Service层实现对多个Repository的调用,并在相应的方法上声明事务。

 

例如:

 

@Service(“userManagement”) 

classUserManagementImplimplementsUserManagement{ 

 privatefinalUserRepositoryuserRepository; 

 privatefinalRoleRepositoryroleRepository; 

 @Autowired 

 publicUserManagementImpl(UserRepositoryuserRepository, 

   RoleRepositoryroleRepository){ 

   =userRepository; 

   =roleRepository; 

 } 

 @Transactional 

 publicvoidaddRoleToAllUsers(StringroleName){ 

   

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1