欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot(一)

程序员文章站 2022-04-19 18:22:53
...

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

1、工具下载

Eclipse:http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neonr
Spring Tool Suite:https://spring.io/tools/sts/all

2、安装插件 Spring Tool Suite

1 、 Eclipse 的 help 点击 Eclipse Marketplace
2 、在 find 输入框中输入 Spring Tool Suite ,然后按 Enter 搜索
3 、找到名字 Spring Tools(... )点击 install
4 、一路下一步 确认 要求什么就确认什么 ,直到安装完毕 重启

3、创建第一个SpringBoot项目

File–>New Project–>Spring Boot–>SpringBoot Starter Project–> 配置 Name(项目名称) 、 Group(公司网址) 、 Package(应用包名)

在 pom.xml中dependencies中添加web模块

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

如下:

<!-- 核心模块,包括自动配置支持、日志和YAML -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- 测试模块,包括JUnit、Hamcrest、Mockito -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Web模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

在java中添加地址注册:

@SpringBootApplication
@RestController
public class SpringDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringDemoApplication.class, args);
    }
    @RequestMapping("/index")
    public String hello() {
        return "Hello from spring boot";
    }
}

运行:在 Application 类上右单击 Run As–>SpringBoot App
在浏览器上输入:http://127.0.0.1:8080/index可以看到返回hello()方法中的返回值”Hello from spring boot”

基本注解功能

Controller ,表示的是返回的内容类型

@RestController 表示返回字符串 (json 数据 ) 相当于 @Controller 以及 @ResponseBody
@Controller 表示可以返回一个跳转页面 (html)
@ResponseBody 单纯的文本内容

如:返回字符串的配置

@RestController
public class UserController {
    @RequestMapping("/login")
    public String login() {
        return "{code:1,data:\"success\"}";
    }
}

返回页面:需要在 src/main/resources 目录下新建文件夹 templates ,然后创建 html 页面(如 map.html )

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>地图页面</title>
</head>
<body>
    <p>这里是地图内容</p>
    </body>
</html>
@Controller
public class LocationController {
    @RequestMapping("/show_location")
    public String showLocation() {
        return "map"; // 去找到 map.html 返回给客户端
    }
}

返回页面需要有个前提,就是依赖渲染框架

<!-- Thymeleaf 模板引擎 , 渲染 Html 页面 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

请求方式以及请求参数

参数,可以直接在功能方法上添加参数即可,也就是方法参数既是请求参数

@RequestMapping("/login")
public String login(String name, String psw) {
    return " 收到的参数 " + name + " " + psw;
}
请求方式: http://127.0.0.1:8080/login?name=aaa&psw=1111

针对参数也可以使用 @RequestParam 指定必须传递的参数

@RequestMapping("/regist")
public String regist(@RequestParam("name") String userName,
@RequestParam("psw") String password,Integer age) {
    return "userName:"+userName+" password:"+password+" age:"+age;
}
http://127.0.0.1:8080/regist?name=tom&psw=123

注意:参数的类型如果是基本数据类型,建议使用其包装类

对于请求方式,如果直接使用 @RequestMapping(“/ 子路径 “) 表示支持 GET 以及 POST 两种请求,如果要限定请求方式则配置如下

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

集成 MyBatis

引入 MyBatis 模块以及引入 MySql 驱动

<!-- mybatis 依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>

<!-- MySql 驱动 -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
</dependency>

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

为了方便 json 数据的处理也可以引入 json 库(阿里巴巴的 fastJson )

<!--Json 库的依赖 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.1.43</version>
</dependency>

配置数据的连接,直接在 src/main/resources/application.properties 文件中添加

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/weibo_db?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Drive

使用 MyBatis 操作数据库

1 、定义数据接口,需要有 @Mapper 描述

@Mapper
public interface UserMapper {
    /**
    *  添加用户信息到用户表中
    *
    * @param name
    * @param psw
    * @param sex
    * @param age
    * @return
    */
    public Integer addUser(@Param("name") String name,
        @Param("psw") String psw, @Param("sex") String sex,
        @Param("age") Integer age);
    /**
    *  检测用户是否存在
    *
    * @param name
    * @return
    */
    public Integer checkUserExist(@Param("nick") String name);
}

2 、在 src/main/resources 新建 mapper 配置的 xml 文件 ( 具体处理数据库操作的配置文件 )

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springdemo.mapper.UserMapper">
    <insert id="addUser">
        insert into users (nick,psw,sex,age)
        values
        (#{name},#{psw},#{sex},#{age})
    </insert>
</mapper>

3 、使用,一般是在控制器 (Controller) 中使用 Mapper 接口 ( 关联实现对象 )

@Autowired
UserMapper userMapper;
...
@RequestMapping(value = "/regist")
public String regist(@RequestParam("nick") String userName, @RequestParam("psw")
                     String password, String sex,Integer age) {
        //  检测用户名是否存在
        int count = userMapper.checkUserExist(userName);
        if (count > 0) {
            //  已经存在
            return " 用户名已存在 ";
        } else {
        int r = userMapper.addUser(userName, password, sex, age);
        if (r > 0) {
            return " 注册成功 ";
        } else {
            return " 注册失败 ";
        }
    }
}

其他的数据库配置 ( 事务相关、或者是加载 application.properties)

@EnableAutoConfiguration
@ComponentScan
@MapperScan("com.example.springdemo.mapper")
public class JdbcConfig {
    // DataSource 配置
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return new org.apache.tomcat.jdbc.pool.DataSource();
    }
    //  提供 SqlSeesion( 数据库事务操作相关的配置 )
    @Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }
    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}

需要依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

后续继续更新。。。

相关标签: SpringBoot