Spring Boot入门就是这么简单


相关文章:
Spring
MyBatis
SpringMVC

一、简介

Spring Boot是一个简化Spring开发的框架。用来监护spring应用开发,约定大于配置,去繁就简,just run 就能创建一个独立的,产品级的应用。

我们在使用Spring Boot时只需要配置相应的Spring Boot就可以用所有的Spring组件,简单的说,spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置。从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。

单体应用与微服务
单体应用是把所有的应用模块都写在一个应用中,导致项目越写越大,模块之间的耦合度也会越来越高。微服务是一种架构风格,用微服务可以将应用的模块单独部署,对不同的模块进行不同的管理操作,不同的模块生成小型服务,每个功能元素最后都可以成为一个可以独立替换、独立升级的功能单元,各个小型服务之间通过http进行通信。

二、Spring应用和Spring Boot应用开发流程的区别

Spring应用开发流程:
在这里插入图片描述
Spring Boot应用开发流程:
在这里插入图片描述

三、Spring Boot核心特性

极低的学习成本
可独立运行的Spring项目
“习惯优于配置”,极大的提高了开发效率
极简的组件依赖,自动发现与自动装配
提供运行时的应用监控
与分布式架构和云计算的天然集成

·微服务:
使用Spring Boot可以生成独立的微服务功能单元

·自动配置:
针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置

·起步依赖:
告诉Spring Boot需要什么功能,它就能引入需要的库。

·命令行界面:
这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。

·Actuator:
让你能够深入运行中的Spring Boot应用程序。

1、用Maven操作springboot

下面便简单用Maven操作一下springboot的简单应用:
首先创建相应的目录:
在这里插入图片描述

在这里插入图片描述

pom.xml:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

MyController.java:

@Controller
public class MyController {
    @RequestMapping("/out")
    @ResponseBody
    public String out() {
        return "success";
    }
}

MySpringBootApplication.java:

//说明这是一个SpringBoot应用的入口类
@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        //启动SpringBoot应用
        SpringApplication.run(MySpringBootApplication.class);
    }
}

运行了后,会在控制台出现这些东西:
在这里插入图片描述

2、用spring Initializr操作springboot

上面的就是用Maven创建springboot项目的操作,下面我们进行spring Initializr对springboot的搭建:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后可以发现,与上面所使用Maven搭建的springboot项目更简便,并且在pom.xml所依赖的包也已经完成了,入口类也已经生成了:
在这里插入图片描述
最后运行的结果与Maven的结果相同

四、Spring Boot入口类

入门类命名通常以*Application结尾
入口类上增加@SpringBootApplication注解
利用SpringApplication.run()方法启动应用

1、Spring Boot启动流程:

在这里插入图片描述

2、Spring Boot中的常用配置

在这里插入图片描述
application-properties:

server.port=80
server.servlet.context-path=/myspringboot
logging.file=E:/myspringboot.log      # 将日志写入文件中
#debug(调试)-->info(一般输出信息)-->warn(警告信息)-->error(异常)-->fatal(灾难级别)
logging.level.root=info
debug=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=1214

这个便是springboot的常用配置,在springboot工程中为了方便,便提出了两种配置文件的格式:
Spring Boot支持两种配置文件:
属性文件:application.properties
YAML格式:application.yml

3、YAML的语法

验证YAML的语法是否错误的网站:点我
YAML是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
YAML语法格式
标准格式:key:(空格)value
使用空格代表层级关系,以“ : "结束

debug: true
#logging.level.root
#logging.file
logging:
  level:
    root:info
  file:E:/myspringboot.log

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    data-username: root
    password: 1214
(1)、Spring Boot自定义配置项

Spring Boot允许我们自定义应用配置项,在程序运行时允许动态加载,这为程序提供了良好的可维护性。
在实际项目开发中,我们通常将项目的自定义信息放在配置文件中。
只需要在application.yml添加:

mall:
  config:
   name: XIN SHOP
   description: 一家卖电脑的
   hot-sales: 20
   show-advert: true

MyController.java:

@Controller
public class MyController {
    @Value("${mall.config.name}")
    private String name;
    @Value("${mall.config.description}")
    private String description;
    @Value("${mall.config.hot-sales}")
    private Integer hotSales;
    @Value("${mall.config.show-advert}")
    private Boolean showAdvert;

    @RequestMapping("/info")
    @ResponseBody
    public String info(){
        return String.format("name:%s,description:%s,hot-sales:%s,show-advert:%s",
                name,description,hotSales,showAdvert);
    }
}

结果为:
在这里插入图片描述
看了上面的结果,已经得到了很多的信息,在实际开发中是需要业务上的调整和布局。

(2)、环境配置文件

Spring Boot可针对不同的环境提供不同的Profile文件。
Profile文件的默认命名格式为application-{env}.yml
使用spring.profiles.active选项来指定不同的profile。

application-dev.yml:

debug: true
#logging.level.root
#logging.file
logging:
  level:
    root: info
  file: e:/myspringboot.log

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 1214
mall:
  config:
    name: XIN SHOP
    description: 一家卖电脑的
    hot-sales: 20
    show-advert: true

application-prd.yml:

debug: false
#logging.level.root
#logging.file
logging:
  level:
    root: info
  file: /local/user/app-prd.log

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://155.32.55.88:3307/prd
    username: root1
    password: 3313@#!
mall:
  config:
    name: 小白
    description: 一家买烧烤的
    hot-sales: 20
    show-advert: true
server:
  port: 80

application.yml:

spring:
  profiles:
    active: prd/dev   #dev是开发环境,prd是生产环境,其中填一个

在游览器访问时,使用dev开发环境时输入:localhost:8080/info,使用prd生产环境时输入:localhost/info

五、打包和运行

利用Maven的package命令,生成可独立运行的Jar包。
利用java-jar xxx.jar命令启动Spring Boot应用。
Jar包可自动加载同目录的application配置文件。

在这里插入图片描述
运行程序后:

在这里插入图片描述

去相应的目录寻找:
在这里插入图片描述
然后输入cmd:
在这里插入图片描述

会发现是80的端口是线上模式,那问题来了,我们应该怎么切换开发模式呢?
解决方法:我们只需要把设置好的环境文件复制到java包同级的目录下,在运行的时候就会优先读取这些配置文件.
在这里插入图片描述
在application.yml修改成dev进入开发模式。
最后进行总结:

Spring Boot用于快速构建Spring应用
采用“习惯优于配置理念”设计
Spring Boot的配置项

六、一个入门小项目(收发红包)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建完成后项目目录:
在这里插入图片描述

项目功能:(由于是入门的小项目,所以非常简单)
1、获取红包列表
2、创建红包(发红包)
3、通过id查询红包
4、更新红包(领红包)
5、关于红包并发中的事务处理

项目源码:

pom.xml:

	<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>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

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

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
	</dependencies>

application.yml:

server:
  port: 8080
  servlet:
    context-path: /luckymoney

limit:
  minMoney: 0.01
  maxMoney: 9999
  baseline-description: 最少要发${limit.minMoney}元,最多${limit.maxMoney}元

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/luckymoney?serverTimezone=UTC
    username: root
    password: 1214

  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

Luckymoney.java:(生成get和set方法)

@Entity
public class Luckymoney {
    @Id
    @GeneratedValue
    private Integer id;
    private BigDecimal money;
    /**
     * 发送方
     */
    private String producer;
    /**
     * 接收方
     */
    private String consumer;

关于数据库的操作用Spring Data的JPA:
LuckmoneyRepository.java:

public interface LuckmoneyRepository extends JpaRepository<Luckymoney, Integer> {
}

LuckymoneyService.java:

@Service
public class LuckymoneyService {

    @Autowired
    private LuckmoneyRepository repository;

    /**
     * 事务 指数据库事务
     * 扣库存 > 创建订单
     */
@Transactional
public void createTwo() {
    Luckymoney luckymoney1 = new Luckymoney();
    luckymoney1.setProducer("猪头");
    luckymoney1.setConsumer("小可爱");
    luckymoney1.setMoney(new BigDecimal("520"));
    repository.save(luckymoney1);

    Luckymoney luckymoney2 = new Luckymoney();
    luckymoney2.setProducer("猪头");
    luckymoney2.setConsumer("小可爱");
    luckymoney2.setMoney(new BigDecimal("1314"));
    repository.save(luckymoney2);
   }
}

LuckymoneyController.java:

@RestController
public class LuckymoneyController {

    @Autowired
    private LuckmoneyRepository repository;

    @Autowired
    private LuckymoneyService service;
    /**
     * 获取红包列表
     */
    @GetMapping("/luckymoneys")
    public List<Luckymoney> list() {
        return repository.findAll();
    }

    /**
     * 创建红包(发红包)
     */
    @GetMapping("/createluckymoney")
    public Luckymoney create(@RequestParam("producer") String producer,
                             @RequestParam("money")BigDecimal money) {
        Luckymoney luckymoney = new Luckymoney();
        luckymoney.setProducer(producer);
        luckymoney.setMoney(money);
        return repository.save(luckymoney);
    }

    /**
     * 通过id查询红包
     */
    @GetMapping("/luckymoneys/{id}")
    public Luckymoney findBiId(@PathVariable("id") Integer id) {
        return repository.findById(id).orElse(null);
    }

    /**
     * 更新红包(领红包)
     */
    @PutMapping("/luckymoneys/{id}")
    public Luckymoney update(@PathVariable("id") Integer id,
                             @RequestParam("consumer") String consumer) {
        Optional<Luckymoney> optional = repository.findById(id);
        if (optional.isPresent()) {
            Luckymoney luckymoney = optional.get();
            luckymoney.setConsumer(consumer);
            return repository.save(luckymoney);
        }
        return null;
    }

    /**
     * 红包的并发中的事务
     */
    @GetMapping("/luckymoneys/two")
    public void createTwo() {
        service.createTwo();
    }
}

以上便是小项目中的所有代码,目录大概为:
在这里插入图片描述
运行其中的一些功能,运行并发中事务的结果:
在这里插入图片描述
数据库可查看:
在这里插入图片描述
以上便是Spring Boot非常简单的入门,一个小白学习中做的笔记┗( ▔, ▔ )┛

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值