SpringBoot入门及基础配置说明(一)

本文分五部分讲解SpringBoot基础部分,仅供入门者参考,如有纰漏,欢迎指正

备注:java环境:jdk 1.8+,开发环境:windows 10系统下使用idea

一、如何创建Spring Boot项目

1、首先打开idea,点击创建新项目,如下图



2、填写项目基本信息,点击Next,如下图:


3、进入项目依赖选择界面,这里我使用最新的SpringBoot2.1.0版本,添加的依赖如下图右侧:  

Web:代表为一个web应用程序

Templents → Thymeleaf : SpringBoot官方推荐的模板引擎,下文页面同样采用thymeleaf模板演示

SQL → JPA:Spring Data 的实现,对数据进行持久化操作


4、点击Next 选择项目储存目录,点击Finish即可创建完成第一个SpringBoot项目,因为采用Maven构建,第一次初始化比较慢,请耐心等待。

二、Spring Boot 目录结构及Dependices分析

1、Spring Boot 目录结构如下图:


相对于传统maven项目,SpringBoot项目多了下面打勾的三个目录,如下表格:

/src/main

项目根目录

 

/java

java源代码目录

 

/resources

资源目录

 

/resources/static

静态资源目录      【√】

图片、css等静态文件存放目录

/resources/templates

表示层页面目录   【√】

Jsp、freemarker等页面文件存放目录

/resources/application.properties

Spring配置文件   【√】

配置文件

/test

测试文件目录

 

2、打开项目目录下的pom.xml

1) <parent>节点解析

 可以看到文件中的parent节点,这里面的spring-boot-starter-parent 会默认提供一些合理的配置,具体如 下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
</parent>
  •  默认使用Java 8
  • 使用UTF-8编码
  • 一个引用管理的功能,在dependencies里的部分配置可以不用填写version信息,这些version信息会从     spring-boot-dependencies里得到继承。
  •  识别过来资源过滤(Sensible resource filtering.)
  • 识别插件的配置(Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).)
  • 能够识别application.properties和application.yml类型的文件,同时也能支持profile-specific类型的文件(如: application-       foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。
  • maven把默认的占位符${…​}改为了@..@(这点大家还是看下原文自己理解下吧,我个人用的也比较少 since the default config files accept Spring style placeholders (${…​}) the Maven filtering is changed to use @..@ placeholders (you can override that with a Maven property resource.delimiter).)

2) dependencies 节点,依赖文件配置

  •  spring-boot-satrter-web 提供web支持、
  •  spring-boot-starter-thymeleaf使用thymeleaf模板引擎
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-satrter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>
3) plugins节点,提供插件支持
  • spring-boot-maven-plugin
spring-boot-maven-plugins能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
</plugins>



三、Spring Boot 常用配置文件

1、application文件的两种配置方式

打开项目的resources目录,会看到application.properties文件,该文件时SpringBoot的主配置文件,可以对项目各项参数进行详细配置,具体配置项如下图所示:

#服务器端口号
server.port=80
#应用上下文[进行合理的项目url划分,解决项目冲突]
#一般情况下小项目通常在tomcat下部署多个webapp,通过上下文区分
#在集群或大型项目中,通常一个tomcat对应一个webapp,然后不同端口进行区分
server.servlet.context-path=/
#UTF-8只包含了二万+ 个中文字符,对于生僻字显示不了
spring.http.encoding.charset=utf-8
#是否开启thymeleaf缓存,关闭缓存可以实现页面热部署,但是必须打开File→settings→build→complier→build project auto项
spring.thymeleaf.cache=false
#解决传日期参数报400转换错误问题
spring.mvc.date-format=yyyy-MM-dd
#设置json日期序列化输出格式相对北京时间与格林尼治时间有八个小时的时差,设置偏移量
spring.jackson.time-zone=GMT+8
#格式化json输出的时间问题,将格林尼治时间进行转换
spring.jackson.date-format=yyy-MM-dd HH:mm:ss SSS
#日志输出地址,springBoot默认并没有进行日志文件输出,只在控制台打印,想输出日志则进行下面配置:
logging.file=C/logs/msg.log
#日志级别 debug → info → warn → error  默认情况Spring Boot日志级别为info
#如果设置debug为true时,则日志级别降低到debug
debug=false
#Root代表默认全局设置
logging.level.ROOT=INFO
#设置指定包的输出级别
logging.level.org.springframework=ERROR
logging.level.org.apache=ERROR

四、Spring Boot 基础数据操作

【情景】 实现学生系统的增删改查

1、这里以SpringBoot官方推荐得SpringData JPA 为例,演示数据的增删改查,然后以MySQL数据库为例,这里我们先看一下

基础的依赖,打开上面项目的pom.xml我们可以看到:

  • spring-boot-starter-data-jpa  这是Spring提供的一套较为简洁的ORM框架,实现CRUD操作
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
 </dependency>

  • mysql-connector-java

  MySql数据库连接驱动

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

2、接下来我们新建一个名为sc_member 的数据库, 然后数据库中新建人员表 t_member,表结构如下:


3、到项目中配置application.yml/application.properties文件,配置端口、数据库信息等,配置信息如下图:

spring:
  application:
    name: member
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/sc_member?useUnicode=true&characterEncoding=UTF-8
    password: root
    username: root
server:
  port: 8003

4、配置好应用信息后在entity包下开始新建实体类 Member.java

这里需要说一下,实体类上面要加@Entity注解,然后添加@Table(name='表明')注解,将实体类与数据信息绑定,

这里的mid为主键,所以添加注解@Id  然后@GenerateValue(strategy='')注解来指定主键的生成策略(因为我的实体类与数据库字段名相对应,所以不需要指定,如果实体名与字段名不匹配,这需要用@Column(name="")进行指定字段名)

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name="t_member")
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mid;   //学生id
    private String name;   //学生名字
    private String idno;   //学生身份证号码
    private String mobile;  //学生手机号码
    private Date regdate;   //入学日期
    private Date expdate;    //毕业日期     注:篇幅问题这里省略Getter and Setter

5、新建接口MemberRepository接口,继承JpaRepository<Member,Long>,JpaRepository 是Spring Boot 为我们提供的简化类,默认提供了增删改查方法,这里的<Member,Long>为 使用JpaRepository需要传入实体类及主键的类型,具体代码如下:

import org.springframework.data.jpa.repository.JpaRepository;
import vip.ablog.member.Entity.Member;

import java.util.List;

public interface MemberRepository extends JpaRepository<Member,Long> {
    //相当于:select * from t_member where mobile = ...
    public List<Member> findByMobile(String mobile);
}

6、新建MemberController类进行测试,这里的注解不再赘述,详情见上文

@Controller
public class MemberController {

    @Resource
    MemberRepository repository;
    @GetMapping("/addMember")
    @ResponseBody
    public String addMember(){
        Member member = new Member();
        member.setIdno("1234");
        member.setExpdate(new Date());
        member.setRegdate(new Date());
        member.setMobile("110");
        member.setName("小明");
        repository.save(member);
        return "sucess!";
    }

然后访问你的项目地址,如下图:(这里只提供思路,不要照搬我的地址)


这时可以看到数据库的表中多了一条记录信息:



7、上面是数据的插入,同样数据的查询修改等如下代码:

 @GetMapping("/findMemberList")
    @ResponseBody
    public List<Member> findMemberList(){
        List<Member> memberList = repository.findAll();
        return memberList;
    }
    @GetMapping("/modifyMember")
    @ResponseBody
    public String modifyMember(Long id){
        //Optional 是一个包含或着不包含一个非空值的容器对象。如果一个值存在,isPresent()将会返回true 并且 get() 将会返回所对应的值.
        Optional optional = repository.findById(id);   //查询时默认返回Optional对象,相当于对原实体的封装
        if (optional.isPresent()) {
            Member member = (Member) optional.get();
            member.setName("小花");
            repository.save(member);
        }else{
            //XXXXX
        }
        return "XXXX";
    }



五、Spring Boot中需要注意的地方

1、thymeleaf文件修改后不自动生效问题:

1) 添加maven依赖

<dependency>
    <!--Spring 官方提供的热部署插件 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

2) 开启热部署

  <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
         <fork>true</fork>
      </configuration>
   </plugin>

3) application配置文件关闭页面缓存

spring.thymeleaf.cache=false

4) idea 打开自动部署

打开File → settings → build → complier → build project auto 项打钩

2、日期格式报400转换错误问题

application配置文件设置日期格式

#解决传日期参数报400转换错误问题
spring.mvc.date-format=yyyy-MM-dd

3、项目启动后访问地址报404页面找不到问题

如果代码无错误,访问后一直404找不到页面,很有可能是项目的main方法所在的ApplicationStart 文件不再这个项目名所在的包下,将main程序放在项目名所在的包下即可运行。


###后续会继续提供SpringCloud的文章#####未完待续#########



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值