首页新闻动态正文

+SpringBoot【黑马java培训】

更新时间:2021年03月18日 08时58分24秒 来源:黑马程序员论坛

黑马中级程序员课程



1. SpringBoot 入门A. SpringBoot 简介
  • SpringBoot 是 2014 年伴随 Spring4.0 开发出来的一个框架
    • SpringBoot 可以帮助我们简单快捷的进行产品级别的开发
  • SpringBoot 核心思想:【约定大于配置】
    • SpringBoot 帮我们自动配置好与其他框架的整合与相关环境的兼容
  • 使用嵌入式的 Servlet 容器,应用无需打包成 war
  • SpringBoot 缺点:入门容易,精通难
B. 微服务
  • 2014 年 martin fowler 提出的一种架构风格
  • 一个应用应该是一组小型服务,可以通过 http 的方式进行交互
    • 每一个功能元素都是一个可独立替换和独立升级的软件单元
    • 但是这样子导致部署和运维比较复杂

B. maven 配置
  • 给maven 的 settings.xml 配置文件的 profiles 标签添加
[XML] 纯文本查看 复制代码
<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>


C. HelloWorld 入门案例
  • 浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串
  • 创建一个 jar 的 maven 工程
  • pom 文件加入依赖
[XML] 纯文本查看 复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

编写一个主程序;启动Spring Boot应用
  • 用于启动 SpringBoot 应用
[Java] 纯文本查看 复制代码
package com.study.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApp {
    public static void main(String[] args) {
        // 把 SpringBoot 启动起来
        SpringApplication.run(HelloWorldMainApp.class,args);
    }
}

编写 Controller
  • 接收浏览器的请求
[Java] 纯文本查看 复制代码
package com.study.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "HelloWorld!";
    }
}

  • 测试
    • 运行主程序的 main 方法即可访问
  • 简化部署
    • 打包之后使用: java -jar Xxxx.jar 即可运行
    • 自带 tomcat 环境

[XML] 纯文本查看 复制代码
<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

D. HelloWorld 案例研究
  • pom 文件
  • 父项目
    • 所有 SpringBoot starter 的父项目
    • 做依赖管理
    • SpringBoot 的版本控制中心,所有的版本都写好的
      • 如果没有在 dependences 中管理的依赖要自己手动指定版本


[XML] 纯文本查看 复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

<!-- 父项目的父项目 -->
<!-- 它来真正管理Spring Boot应用里面的所有依赖版本 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

导入依赖
  • spring-boot-starter
    • 表示要导入 springboot 的场景启动器
  • web
    • 导入 web 应用相关的【依赖】
  • Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器)
    • 只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来
    • 要用什么功能就导入什么场景的启动器

[XML] 纯文本查看 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

E. SpringBoot 的主程序类细节
  • @SpringBootApplication: SpringBoot 的主程序类
    • SpringBoot 应用标注在某个类上说明这个类是 SpringBoot 的主配置类
    • SpringBoot 就应该运行这个类的 main 方法来启动 SpringBoot 应用

[Java] 纯文本查看 复制代码
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
                @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
                @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    .....
}

  • @SpringBootConfiguration: 表示该类是一个配置类
    • 表示这个类是一个配置类
      • @Configuration: Spring 最底层的注解
        • 配置类下配置这个注解
        • 相当于配置文件
          • @Component: 配置类也是 Spring 的一个组件



  • @EnableAutoConfiguration: =加载配置项
    • @AutoConfigurationPackage: 自动配置包
      • @Import(AutoConfigurationPackages.Registrar.class): Spring 底层注解
        • 给容器中导入组件
        • 由导入的组件提供配置
      • 导入我们主程序下的配置
    • @Import(EnableAutoConfigurationImportSelector.class): 导入哪些组件的选择器
      • 将所有需要导入的组件以全类名的方式返回, 这些组件就会添加到容器中
      • 导入自动配置类
        • 导入这个场景需要用到的组件和设置好配置
      • 有了自动配置类,免去了我们手动编写配置注入功能组件等的工作
        • 从类路径下获取 META-INF/spring.factories 中 EnableAutoConfiguration指定的值
          • 里面就有默认的配置信息




2. 使用 Spring Initializer 快速创建 Spring Boot 项目
  • 根据提示就可以快速创建一个 SpringBoot 项目
A. 默认 SpringBoot 的项目结构
[XML] 纯文本查看 复制代码
resources
    |___> satic : 保存所有的静态资源
    |___> templates: 保存所有的模板页面(默认是jar包,使用嵌入tomcat,默认是不支持 jsp 的,可以使用模板引擎)
    |___> application.properties : 应用的配置文件

B. 配置文件
  • SpringBoot 有 2 种配置文件(配置文件名是固定的)
    • application.properties
    • application.yml
      • 以数据为中心,同样的配置


  • 表示字面量
    • k: v:字面直接来写
      • "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
        • 特殊字符会转义
      • '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
        • 原样输出


  • 对象
    • k: v:在下一行来写对象的属性和值的关系;注意缩进
    • 对象还是k: v的方式

[XML] 纯文本查看 复制代码
friends:
    lastName: zhangsan
    age: 20

[XML] 纯文本查看 复制代码
friends: {lastName:"zhagnsan", age: 23}

数组
  • 用- 值表示数组中的一个元素
[XML] 纯文本查看 复制代码
pets:
    - cat[mw_shl_code=java,true]@NoArgsConstructor
@ToString
@Data
public class Dog {
    private String name;
    private Integer age;
}
@NoArgsConstructor
@ToString
@Data
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birthday;

    private Map<Object, Object> maps;
    private List<Object> lists;
    private Dog dog;
}

    - pig
    - dog[/mw_shl_code]
[XHTML] 纯文本查看 复制代码
pets: ["cat", "dog", "pig"]

C. 取值
[Java] 纯文本查看 复制代码
@NoArgsConstructor
@ToString
@Data
public class Dog {
    private String name;
    private Integer age;
}

[Java] 纯文本查看 复制代码
@NoArgsConstructor
@ToString
@Data
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birthday;

    private Map<Object, Object> maps;
    private List<Object> lists;
    private Dog dog;
}


. properties 配置文件的编码问题
  • properties 的写法和 yml 的写法相似
  • 配置文件中如果值为中文时会出现乱码
    • idea 默认使用 utf-8 进行编码的
    • 把文件的编码设置成 utf-8

















推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


分享到:
在线咨询 我要报名
和我们在线交谈!