Spring Boot快速入门

安装

安装依赖

maven是一个依赖管理工具,我们利用maven进行构建。创建一个maven项目,在pom.xml里面添加依赖项

<?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>1.0</groupId>
    <artifactId>SpringBoot</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

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

,接着在idea里面import change,或者执行mvn install来下载依赖。

启动

在src根目录创建一个包,然后将项目的代码放进去。(注:App类不能直接放在src根目录,否则将无法正常启动)

package App;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

运行

点击RUN,即可运行。如果是正常启动,控制台会输出

路由

什么是路由?

路由是什么?路由即我们浏览器上的地址,我们通过路由与服务器进行信息交互。例如:https://search.bilibili.com/all?keyword=老友记。在这个例子中,我们访问https://search.bilibili.com/all,并且参数是老友记,直观意思是搜索keyword是老友记的视频。也可以这么理解,https://search.bilibili.com/all是一个函数,keyword是参数,通过调用函数来获得对应的结果。

匹配方法和路由

在Spring Boot中,我们需要指定哪一个路由对应哪一个方法。

我们在一个Controller里面通过@RequestMapping注解来匹配路径和对应的方法,以下是代码例子。

@RestController@RequestMapping("test")
public class IndexController
{
    @RequestMapping("index")
    public String fun()
    {
        return "hello Spring boot";
    }
}

@RestController注解的作用是表示这一个类是一个控制器类,并且返回的对象会自动转换为JSON(如果返回字符串则还是字符串形式)。@RequestMapping作用是匹配路由和方法,当它加在类上的时候,就是给该类的所有路径前加一层,但它加在方法上的时候,表示该路径匹配该方法。在这个例子中访问http://localhost:8080/hello/index,页面即打印hello Spring boot。

返回Json对象

进一步,如果我们想要返回JSON对象,怎么办呢?

@RestController注解的类会自动转换对象为JSON的,如果只是用@Controller修饰类,则要在方法前加上@ResponseBody。以下演示如何返回Json对象。

 @RequestMapping("person")
    public Object testJson()
    {
        return new Person("Overflow",18);
    }

在之前的控制器上加上以上代码,Person是我们自己定义的类。在浏览器上打开即可以看到Json字符串

{"name":null,"age":18}。

指定请求方法

如果我们想指定路由的请求方法,我们可以在@RequestMapping指定method,method可以是单个对象,也可以是数组形式。

@RequestMapping( value = "index",method ={RequestMethod.GET,RequestMethod.POST} )

以上例子说明该路由请求可以用GET和POST访问。如果不特别指定,则任何方法都可以访问该路由。

接受路由参数

只有单纯的路由是不够的,路由可以附带参数对服务器,那么我们绑定的方法要如何接受这些参数呢?

在Spring Boot里,我们只需要结合注解即可,以下介绍几种例子

1、匹配路由中的参数

 @RequestMapping("/person/{name}")
    public Object testJson(@PathVariable(name = "name")String name)

2、获得get 或者post方法的参数

get方法路径就是 http:localhost:8080/hello/data?name=Tom

post方法要把参数放在form-data中

@RequestMapping(value = "/data",method={RequestMethod.GET,RequestMethod.POST})
    public Object accessData(@RequestParam(name="name") String name)
    {
        return name;
    }

3、接受Json对象

当参数比较多的时候,可以将参数解释为一个对象。注意该类一定要有一个默认的构造方法。

@RequestMapping(value = "/json")
    public Object accessJsonData(Person person)
    {
        return person.getName();
    }

4、接收HttpServletRequest对象

事实上以上的接收参数方法都是框架封装HttpServletRequest对象,而我们获得这个对象的方法很简单,只需要在函数的参数列表里面声明就好,Spring框架会为我们的方法注入该对象。

  @RequestMapping(value = "/servlet")
    public Object selvlet(HttpServletRequest request)
    {
        return request.getRequestURL();
    }

Session和Cookie

cookie的作用

cookie是存储在浏览器端的数据。通常用于保存客户端的状态信息。

Session的作用

Http请求,与普通的程序不一样,他是没有状态的。但是许多应用需要记录用户的状态,例如用户的登录信息等等,这时候就利用session技术来存储。当浏览器与服务器进行交互,服务器会分配一个SessionID给浏览器,浏览器会把这个ID保存在cookie里,然后每一次发送请求的时候都会将这一个sessionID附上,然后服务器就可以获得该ID的相关数据。

Map<String,Map<String,Object>> Session

Session的使用类似于以上的代码说明,一个SessionID对应一个Map来存储数据。

当然在Spring Boot里面,不需要手动地调用sessionID,就能获取对应该ID的HttpSession对象。

@RequestMapping(value = "/sessionAndCookie")
    public Object sessionAndCookie(HttpSession session, HttpCookie cookie)

与数据库交互数据

什么是ORM?

数据库的数据是通过字段来存储信息的,如果Java类的属性能够与数据库的字段互相映射,那么我们就可以像操作Java对象一样操作数据库数据,方便的进行增删查改操作。

SpringBoot与MySQL进行数据交互

添加依赖

在原来的pom.xml里面添加以下依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

在resource文件夹新建一个application.properties文件,这是一个配置文件

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名称
spring.datasource.username=username
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto的作用,在这里我直接引用文档的解释

Here, spring.jpa.hibernate.ddl-auto can be noneupdatecreatecreate-drop, refer to the Hibernate documentation for details.

  • none This is the default for MySQL, no change to the database structure.
  • update Hibernate changes the database according to the given Entity structures.
  • create Creates the database every time, but don’t drop it when close.
  • create-drop Creates the database then drops it when the SessionFactory closes.

创建与数据库表对应的Entity类

@Entity
@Table(name = "user")
public class User
{
    @Id
    public int id;
    public String username;
    public String password;
    public int power;
}

注解解释,@Entity注解表示该类是一个与数据库映射的类,@Table表示这个类绑定的是user表,@Id表示id是主键。

创建Repository类

这个类是与数据库进行交互用的,我们要继承Spring框架给我们提供的一个接口,CrudRepository<>,在使用的时候Spring框架会为我们自动注入相关的方法,方便我们进行增删查改

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
    <S extends T> S save(S var1);

    <S extends T> Iterable<S> save(Iterable<S> var1);

    T findOne(ID var1);

    boolean exists(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAll(Iterable<ID> var1);

    long count();

    void delete(ID var1);

    void delete(T var1);

    void delete(Iterable<? extends T> var1);

    void deleteAll();
}

解释以上相关的函数

save(S var)    传入对象即可保存在数据库对象,如果我们的对象有指定ID,则会更新相应ID的记录

delete(ID var1)  传入ID即可删除对应ID的记录

构造查询方法

以下是我们的UserRepository的例子

public interface UserRepository extends CrudRepository<User,Long>
{
    //1、通过函数名来进行查询
    User findByUsername(String username);
    List<User> findUsersByUsername(String username);

    //2、通过指定HQL语句进行查询
    @Query("select u from User u where u.username= :username and u.password= :password")
    User findUser(@Param("username") String name,@Param("password") String password);
}

查询方式有两种

一种是Spring Data提供的通过一定规范的函数名进行查询

另一种是利用@Query注解,指定HQL,来实现复杂的查询

大家看到这里可能会疑惑,为什么只需要定义方法名,而不需要写具体的方法体呢。这是Spring框架的优势,因为对象都是由Spring来管理,因此只需要给与必要的信息给框架识别,框架就能够构建一个继承你的接口的函数,接着按照Spirng自动载入的方法,将该对象引入类中即可。

在Controller类里使用Repository类

@RestController
@RequestMapping("user")
public class UserController
{
    @Autowired
    UserRepository userRepository;

    @RequestMapping("find/{name}")
    public Object findUser(@PathVariable("name")String name)
    {
        return userRepository.findByUsername("hello");
    }

    @RequestMapping("check/{name}/{password}")
    public Object checkUser(@PathVariable("name") String name,@PathVariable("password") String password)
    {
        return userRepository.findUser(name, password);
    }
}

利用@AutoWired即可自动载入我们定义的UserRepository

参考资料

1、http请求方法:http://www.runoob.com/http/http-methods.html

2、spring boot文档:http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/

3、spring data jpa文档:http://docs.spring.io/spring-data/jpa/docs/2.0.0.M4/reference/html/#jpa.query-methods

4、spring boot guide:https://spring.io/guides/gs/rest-service/

时间: 2024-10-06 00:31:30

Spring Boot快速入门的相关文章

Spring Boot快速入门(二):http请求

原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hello Spring Boot 二.开始 新建java类RequestCtrl 1.添加一个all方法,使用@RequestMapping注解,可以处理所有的http请求 @RestController//这是一个控制器并只返回数据不寻找视图 public class RequestCtrl { @R

微服务的入门级微框架Spring Boot快速入门

详情请交流  QQ  709639943 00.微服务的入门级微框架Spring Boot快速入门 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务

Spring Boot 快速入门 史上最简单

1.Spring Boot 概述 Spring Boot 是所有基于 Spring 开发的项目的起点.Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件. 2.什么是 Spring Boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新

Spring Boot 快速入门

什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适). 使用spring boot有什么好处 其实就是简单.快速.方便!平时如果我

Spring Boot快速入门 (一)

1.IDE工具的安装和使用 1.1.下载IDE Spring Tool Suite Eclipse 1.2.介绍 maven是学习Spring Boot必备之一 Spring Tool Suite可快速搭建Spring Boot项目 1.3.Spring Boot项目结构预览 2.RESTfull API简单项目的快速搭建 2.1.搭建一个简单的RESTfull API接口项目 2.2.引入spring-boot-starter-web 2.3.引入spring-boot-devtools 2.

Spring Boot 快速入门(一)

简介  相信很多人都接触spring框架很长时间了,每次搭建spring框架的时候都需要配置好多的jar.xml,做很多繁琐重复的配置,稍微不留神就会出现各种各样的问题,每次调试真的是香菇.蓝瘦啊. spring boot的出现帮助我们彻底解决了这些jar的依赖,只需要很少的配置就可以完成我们的开发工作,我们可以把自己的应用打包成jar,使用java -jar来运行spring web应用,spring boot集成了很多的web容器,后面都会慢慢讲到这些,今天我们就开始使用spring boo

spring boot快速入门 10: 日志使用

第一步: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/PO

Spring Boot快速入门(五):使用MyBatis(注解形式)进行数据库操作

原文地址:https://lierabbit.cn/articles/7 添加依赖 新建项目选择web,MyBatis,MySQL三个依赖  对于已存在的项目可以在bulid.gradle加入,spring boot将会帮你自动配置好 compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.springframework.boot:spring-boot-starter-web') runtime

Spring Boot快速入门(六):thymeleaf

原文地址:https://lierabbit.cn/articles/8 静态资源 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. Spring Boot的默认位置是resources/static 模版页面 各种模版的页面,这次我们选用Thymeleaf Spring Boot的默认位置是resources/templates 渲染页面 在之前的示例中,我们都是通过@RestController来处理请求,所以返回的内容为json对象.当我们需要页面的时候使用@Con