SpringBoot快速入门

一.SpringBoot简介

Spring Java 企业版( Java Enterprise Edition JEE ,也称 J2EE )的轻量级代替品。无需开发重量级的 Enterprise
JavaBean EJB ), Spring 为企业级 Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单
Java 对象( Plain Old Java Object POJO )实现了 EJB 的功能。

1.SpringBoot的特点

SpringBoot 不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式

2.SpringBoot的核心功能

a.起步依赖

起步依赖本质上是一个 Maven 项目对象模型( Project Object Model POM ),定义了对其他库的传递依
赖,这些东西加在一起即支持某项功能。
简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能
 
Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。

b.自动配置

Spring Boot 的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定
Spring 配置应该用哪个,不该用哪个。该过程是 Spring 自动完成的。

添加依赖,在添加依赖的时候,不需要添加版本号,那么SpringBoot是如何帮助我们自动添加版本的呢?我们知道,在工程的pom.xml文件中一般都会加这个父类依赖:

 <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
  </parent>

 这个依赖中我们要指明SpringBoot的版本号,接下来我们一起看下starter-parent的依赖关系,打开文件spring-boot-starter-parent-2.0.4.RELEASE.pom

在这里插入图片描述

从依赖关系看,starter-parent主要功能归纳为:
1.添加对spring-boot-dependencies的依赖
2.指定工程的编码格式
3.指定工程依赖的JDK版本
4.自动化打包与插件配置
5.资源过滤配置
我们根据指定的路径(…/…/spring-boot-dependencies)查看dependencies的依赖关系:
 

在这里插入图片描述

从上图看到,dependencies的依赖文件列举的属性properties里展示了各种依赖包的版本,正是由于这个版本的存在,我们在开发的时候才不必添加版本,就可以下载到相应的依赖。
SpringBoot自动配置的核心是源于条件注解,就是指在不同的条件下生成不同的bean,或者是在某个bean创建完成后,才去生成其他的bean,诸如此类,在特定的条件下创建bean的行为。比较常见的条件注解有:

@Conditional 依赖的条件
@ConditionalOnBean 在某个Bean存在的条件下
@ConditionalOnMissingBean 在某个Bean不存在的条件下
@ConditionalOnClass 在某个Class存在的条件下
@ConditionalOnMissingClass 在某个Class不存在的条件下

二、SpringBoot快速入门(1)自己一步步的配置,不使用生成。

 

1 创建Maven工程

使用 idea 工具创建一个 maven 工程,该工程为普通的 java 工程即可
 
接下来的正常填写就可以
 
 

2 添加SpringBoot的起步依赖

SpringBoot 要求,项目要继承 SpringBoot 的起步依赖 spring-boot-starter-parent
SpringBoot 要集成 SpringMVC 进行 Controller 的开发,所以项目要导入 web 的启动依赖
<?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>org.example</groupId>
    <artifactId>springboot_quick</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot_quick</name>
    <description>Demo project for Spring Boot</description>

    <!--SpringBoot要求 项目要继承SpringBoot的起步依赖Spring-boot-parent-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.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>

    <!--SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖-->
    <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>
        
        <!--热部署配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <!--日志文件-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
3 编写 SpringBoot 引导类
package com.benniu;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 13:53
 */
/*要通过SpringBoot提供的引导类起步SpringBoot才可以进行访问*/
@SpringBootApplication
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);
    }
}

4 编写Controller

package com.benniu.Controller;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 13:56
 */

/*在引导类MySpringBootApplication同级包或者子级包中创建QuickStartController*/
@Controller
public class QuickStartController {

    @RequestMapping("/quick1")
    @ResponseBody
    public String quick(){
        return "springboot 访问成功";
    }
}    }

二、SpringBoot快速入门(2)使用生成。

到此,其pom文件就生成了相应的依赖,不过需要改一些地方,一共两处

    <groupId>com.example</groupId>
    <artifactId>springboot_quick2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging><!--这一部分自动生成没有-->

    <name>springboot_quick2</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <!--这一部分自动生成没有-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>1.8</java.version>
    </properties>

到此处,springboot的第二种自动生成的创建就成功了。

三、SpringBoot的配置文件

SpringBoot 是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用
application.properties 或者 application.yml application.yaml )进行配置。
application.properties 文件是键值对类型的文件
application.yml可以被支持YAML 库的不同的编程语言程序导 入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP 等。
 
springBoot约定大于配置到底是什么意思
约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性

 

在SpringBoot中,约定大于配置可以从以下两个方面来理解:

开发人员仅需规定应用中不符合约定的部分
在没有规定配置的地方,采用默认配置,以力求最简配置为核心思想总的来说,上面两条都遵循了推荐默认配置的思想。当存在特殊需求的时候,自定义配置即可。这样可以大大的减少配置工作,这就是所谓的“约定”。

application.properties

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db3?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#UTC是统一标准世界时间,UTF-8,这个是解决中文乱码输入问题
spring.datasource.username=root
spring.datasource.password=root


#spring集成Mybatis环境
# pojo别名扫描包
mybatis.type-aliases-package=com.benniu.domain
# 加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml


#JPA Configuration:
spring.jpa.database=mysql 
spring.jpa.show-sql=true 
spring.jpa.generate-ddl=true 
spring.jpa.hibernate.ddl-auto=update 
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy

里面整合了mybatis与jpa

 

(1)整合JPA

dao持久层,继承类来使用里面的方面。

package com.benniu.dao;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 16:33
 */
@Repository
public interface UserRepository extends JpaRepository<User,Long> {
    public List<User> findAll();
}

domain,实体类对象pojo

package com.benniu.domain;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 15:40
 * 创建实体:User
 */
@Entity
public class User implements Serializable {
    //主键
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    //用户名
    private String username;
    //密码
    private String password;
    //姓名
    private String name;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

Controller表现层,进行访问。Controller/MapperController

package com.benniu.controller;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 15:52
 */
@Controller
public class MapperController {

    @Autowired
    private UserRepository userRepository;

    //JPA整合
    @RequestMapping("/queryUser2")
    @ResponseBody
    public List<User> queryUser2(){
        List<User> users = userRepository.findAll();
        return users;
    }
}

运行后,直接在浏览器http://localhost:8080/queryUser2

 

(2)整合Mybatis

mapper/UserMapper.java

package com.benniu.mapper;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 15:44
 */
@Mapper
@Service
public interface UserMapper {
    public List<User> queryUserList();
}

domain/User.java

package com.benniu.domain;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 15:40
 * 创建实体:User
 */
@Entity
public class User implements Serializable {
    //主键
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    //用户名
    private String username;
    //密码
    private String password;
    //姓名
    private String name;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

配置Mybatis配置文件UserMapper.xml

resources/mapper/Usermapper.xml---此目录与你UserMappera.java目录相对应。

<?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.benniu.mapper.UserMapper">
    <select id="queryUserList" resultType="user">
        select * from user
     </select>
</mapper>

Controller/MapperController

package com.benniu.controller;
/**
 * Created with IntelliJ IDEA.
 * Date: 2020/8/17
 * Time: 15:52
 */
@Controller
public class MapperController {
    @Autowired
    private UserMapper userMapper;

    @Autowired
    private UserRepository userRepository;
    
    //Mybatis的整合
    @RequestMapping("/queryUser1")
    @ResponseBody
    public List<User> queryUser1(){
        List<User> users = userMapper.queryUserList();
        return users;
    }
}

运行后,直接在浏览器http://localhost:8080/queryUser1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值