SpringBoot之基础入门

前言:主要是体现一个极简的编程风格,大部分都可以通过注解来完成~通过来做一个简单的resuful api增删改查功能~

1. 使用Spring创建Spring Boot项目

在网站上https://start.spring.io或者通过IDEA自带的、版本选择1.5几的、一般的在在serch for dependency选择web。

2.工程结构

    main是写代码的,test是用于单元测试的,对于第一次导入jar包的话,在maven中一定要配置阿里云镜像中央仓库,否则就是龟速了。

    所有的启动类都在@SpringBootApplication注解上,从这个入口开始进。

    还有一个配置文件application.propertiea,不过推荐写成yml文件,结构清晰

3.启动方式与配置文件

     3.1 启动方式共有3种:

  • 在有SpringBootApplication注解上右键run
  • 在项目文件下,mvn spring-boot:run
  • 在项目文件下,先执行mvn install(先编译),再进入target目录下找到对应的jar文件,执行 java -jar jar文件(右键tab自动,IDEA的终端就是显示当前的项目文件) 类似文件形式:java -jar xxx-0.0.1-SNAPSHOT.jar

既然三种都能启动成功、那么看看配置文件有什么作用? 不过推荐写成yml文件格式~

访问网址:http://localhost:8081/student/hello

假如有很多个属性的话,那么一个一个写就很麻烦了~ 

student:
  score: 95
  age:  17
---------------
@Component
@ConfigurationProperties(prefix = "student")   // 配置文件student开头的
public class StudentProperties {

    private String score;

    private Integer age;

    public String getScore(){
        return score;
    }

    public void setScore(String score){
        this.score = score;
    }
}


假如现在有多个配置,那么怎么同时打开呢?  多环境配置~

这里就是之前执行的三种方式。用命令行启动另外的项目~

3.注解

@RestController注解是组合注解,Controller 和ResponseBody

对模板的使用不用做太多了解,现在前后端分离,后端一般是提供rest接口,返回json格式给前端,使用模板会给性能带来损耗。模板就是返回的页面,官方默认的thymleaf(在pom配置一下),然后新建一个html文件。

处理请求参数

@PathVariable    获取url中的数据

@RequestParam   获取请求参数的值,可以设定多个参数、

@GetMapping 组合注解 

Pathvariable中用的是    http://localhost:8080/hello/12

@RequestMapping(value = "/hello/{id}", method = RequestMethod.GET)
    public String say(@PathVariable("id") Integer idd){
        return "id:"+ idd;
    }

那url用传统的方式    http://localhost:8080/hello?id=2

@RequestMapping(value = "/hello", method = RequestMethod.GET)
//  @GetMapping("value = "/hello")  简写版
public String say(@RequestParam(value = "id", required = false, defaultValue = "0") Integer idd){
    return "id:"+ idd;
}
4. 处理数据库 Jpa

Spring-Data-Jpa(Java Persistence API)定义了一系列对象持久化的标准,实现这一规范常见的有Hibernate。

相关JPA的注解:

@Entity:@Table(name=”“):表明这是一个实体类。一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略

@MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。

@NoRepositoryBean:一般用作父类的repository,有这个注解,spring不会去实例化该repository。

@Column:如果字段名与列名相同,则可以省略。

@Id:表示该属性为主键。

@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”):表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq。

@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致。

@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式

@JsonIgnore:作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

@OneToOne、@OneToMany、@ManyToOne:对应Hibernate配置文件中的一对一,一对多,多对一。


例子,RESTful API设计

请求类型请求路径功能
GET/students获取学生列表
POST/students创建一个学生
GET/students/id通过id查询一个学生
PUT/students/id通过id更新一个学生
DELETE/students/id通过id删除一个学生

添加jpa,mysql包 ,配置文件中配置mysql,数据库新建,基本字符集为utf-8mb4,数据排列utf8mb4genera

就是一个简单的增删改查,就不讲了~

5. 事务@Transaction

同时操作多条数据,只有查询的时候不用加事务~

6. 表单验证:

@Valid 配合BindingResult,信息存进去, @Min, @Max

7. AOP统一处理请求日志

是一种编程范式,是一种程序设计思想。

@Pointcut定义一个切入点,after,before,afterRunning,afterThrowing,around进行通知注解和调用切入点

获取一些类方法和参数,需要传入一个joinPoint类。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值