前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 初入门

SpringBoot 初入门

作者头像
希希里之海
发布2019-06-25 10:23:24
5810
发布2019-06-25 10:23:24
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏

SpringBoot 初入门

关于介绍什么之类的就不讲了,主要做一下学习记录。


1. 启动方式

  1. IDEA 启动
  2. 命令行启动:
代码语言:javascript
复制
mvn spring-boot:run
  1. 部署到服务器启动:

先进行打包,

代码语言:javascript
复制
mvn clean package

移动到项目的 target 目录下,可以看到一个后缀名为 jar 的文件,便是刚刚我们打包的 jar 包,

使用命令行启动:

代码语言:javascript
复制
java -jar target/luckymoney-0.0.1-SNAPSHOT.jar 
  1. 传参方式启动:
代码语言:javascript
复制
java -jar -Dspring.profiles.active=prod target/luckymoney-0.0.1-SNAPSHOT.jar 

使用 prod 环境。(多环境配置:使用开发和生产环境)


2. 配置文件

配置文件有两种写法:

  • application.properties
代码语言:javascript
复制
server.port=8081
server.servlet.context-path=/luckmoney
  • application.yml
代码语言:javascript
复制
server:
  port: 8081
  servlet:
    context-path: /luckmoney

推荐后一种写法,结构更清晰。


3. 项目配置

a. 单个配置 @value

在配置文件中使用配置,如下写法:

代码语言:javascript
复制
minMoney: 0.01
description: 最少要发${limit.minMoney}元,最多要发${limit.maxMoney} 元。

然后传入参数:

代码语言:javascript
复制
@Value("${minMoney}")
private BigDecimal minMoney;
b. 对象配置 @ConfigurationProperties

如果配置项很多,并且相互联系,把配置放到对象类中,使用 @Component@ConfigurationProperties 。然后使用 @Autowired 方式自动注入 Controller。

application.yml:

代码语言:javascript
复制
limit:
  minMoney: 0.01
  maxMoney: 9999
  description: 最少要发${limit.minMoney}元,最多要发${limit.maxMoney} 元。

对象配置类 LimitConfig.java :

代码语言:javascript
复制
@Component
@ConfigurationProperties(prefix = "limit")
public class LimitConfig {
    private BigDecimal minMoney;
    private BigDecimal maxMoney;
    private String description;
    // getter 和 setter 方法
}

属性注入 Controller.java :

代码语言:javascript
复制
@RestController
@RequestMapping("/hello")
public class HelloController {
    @Autowired
    private LimitConfig limitConfig;
    // 实现方法
}

4. Controller 的使用

名称

作用

@Controller

处理http请求

@RestController

Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller

@RequestMapping

配置url映射

@PathVariable

获取url中的数据

@RequestParam

获取请求参数的值

@Controller 可以在 springboot 模板注释中用到。

配合:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

@ConrollerResponseBody 返回原来的 json。

@ResponseBody 可以在方法上或类上使用。

总结:@Controller + ResponseBody = @RestController

举个例子:

代码语言:javascript
复制
@RestController
@RequestMapping("/hello")
public class HelloController {
    @Autowired
    private LimitConfig limitConfig;

    // RequestParam:地址栏得到 /say?id=1 这种,后两个属性是设置不传参默认为 0
    @GetMapping("/say")
    public String say(@RequestParam(value = "id", required = false, defaultValue = "0") Integer myId) {
        return "id:" + myId;
    }
    
    // PathVariable:地址栏得到 /say1/1 这种
    @GetMapping("/say/{id}")
    public String say2(@PathVariable("id") Integer id) {
        return "id:" + id;
    }
}

@GetMapping 可以传数组。如:

代码语言:javascript
复制
@GetMapping({"hello", "say"})

可以在类上使用 @RequestMapping("/xxx"), 方法上使用 GetMapping("/yyy")PostMapping("/yyy") 来达到:/xxx/yyy 的效果。


5. 数据库操作

springboot 操作数据库是通过 Spring-Data-Jpa 来实现的。

JPA(Java Persistence API)定义了一系列对象持久化的标准。

1. maven 依赖:
代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

注意:在springboot 中的maven 依赖不用加版本号,springboot已经帮我们选定好了版本号。

2. 在 application.yml 中设置:
代码语言:javascript
复制
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/luckmoney?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: xxxx

  jpa:
    hibernate:
      ddl-auto: update
#      ddl-auto: create (create表示创建,update表示更新)
    show-sql: true   # 控制台打印sql语句
3. 建表:

建表也可以直接在 springboot 中建,不需要在数据库中建表。

代码语言:javascript
复制
@Entity
public class Luckmoney {

    // 构造方法
    public Luckmoney() {
    }
    
    @Id
    @GeneratedValue
    private Integer id;

    private BigDecimal money;

    // 发送方
    private String producer;

    // 接收方
    private String consumer;

    // getter 和 setter 方法
}
4. 增删改查

在 springboot 中我们也不需要自己去实现增删改查的方法发,可以自定义个接口,继承 JpaRepository 类,再编写 controller 类实现接口就行了。

接口类:

代码语言:javascript
复制
public interface LuckmoneyRepository extends JpaRepository<Luckmoney, Integer> {
}

JpaRepositroy 参数中第一个是:定义的 Entity,第二个是主键的类型。

实现类:

代码语言:javascript
复制
@RestController
public class LuckymoneyController {

    @Autowired
    private LuckmoneyRepository repository;

    // 获取红包列表
    @GetMapping("/luckmoneys")
    public List<Luckmoney> list() {
        return repository.findAll();
    }

}

6. 事务操作

事务操作一般都放在 service 文件下。

注意:

事务是指数据库的事务,不是指 java 事务,@Transactional 注解只是添加了执行,回滚的操作,具体的事务执行还是要根据数据库情况。比如有些数据库不支持事务,MySQL中 MyISAM 引擎是不支持事务的。

  • 查看当前数据库支持的引擎和默认的数据库引擎:
代码语言:javascript
复制
show engines;
  • 修改表引擎:
代码语言:javascript
复制
alter table luckmoney ENGINE=InnoDB;
  • 查看当前表的创建语句:
代码语言:javascript
复制
 show create table luckmoney 

7. 具体代码

具体代码:luckmoney

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot 初入门
    • 1. 启动方式
      • 2. 配置文件
        • 3. 项目配置
          • 4. Controller 的使用
            • 5. 数据库操作
              • 6. 事务操作
                • 7. 具体代码
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档