本文为我学习日志,记录学习过程。整体章节分为16章
作用:帮我们很快的简单的创建一个独立的产品级别的应用
优点:
J2EE开发的一站式部署
背景:Martion fowler的博客,设计思想
微服务是一种架构风格,开发一个应用时应为一组小型服务的组合;通过http方式进行互通;每一个功能元素最终都是一个可独立替换可独立升级的软件单元。
单体应用:ALL IN ONE
jdk1.8
maven3.0
IEDA2019
spring boot 2.1.5
maven:给mavensetting.xml文件添加代码
<profile>
<id>jdk-1.8id>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
实现一个功能:浏览器发送一个hello请求,服务器接受服务器请求,相应Hello World字符串;
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.5.RELEASEversion>
<relativePath/>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
package ink.poesy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringBootApplication.class,args);
}
}
package ink.poesy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody//目的是为了把hello world返回给请求
@RequestMapping("/hello")
public String hello(){
return "Hello world!";
}
}
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
直接使用这个工具就可以进行打包
spring-boot-starter-web依赖:帮我们导入web模块正常运行所依赖的组件
spring boot 将所有的功能场景抽取出来,做成一个个Starters启动器,只需要在项目里面引入这些starter相关的场景的所有依赖都会导入进来,要用什么功能就导入什么场景的启动器。
核心注解:@SpringbootApplication标注在某个类上说明这个类是springboot的主配置类
@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:Spring boot的配置类
标注某个类上,表示这是一个spirng boot配置类:
@Configuration:配置类上标注这个注解:
配置类----配置文件;配置类也是容器组件中的一个;@Component
@EnableAutoConfiguration:开启自动配置功能
以前我们需要配置的东西,spring boot帮我们自动配置,这个注解告诉spring boot开启自动配置功能;这样自动配置才能生效。
进入到这个注解中我们看到使用:
@AutoConfigurationPackage:自动配置包
下面@Import:给容器导入一个组件;
@Import(EnableAutoConfigurationImportSelector.class);给容器中导入组件nableAutoConfigurationImportSelector.class:导入那些组件选择器:将所有导入的组件以全类名的方式返回,这些组件就会被添加到容器中;最终会给容器中导入非常多的自动配置类(xxxAutoCOnfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了这些自动配置类,免去我们手动编写配置和注入功能组件等工作;
作用:将主配置类(@SpringBootConfiguration标注的类)的所在包及下面所有自曝里面的所有组件扫描到spring容器;
@ComponentScan
使用Spring boot
下一步,创建项目
选择模块,导入场景,需要导入相关功能的依赖。
配置项目路径
选择自动加载
我这里需要修改Maven配置
package ink.poesy.springboot01helloworldquick.Controller;
import org.springframework.web.bind.annotation.RestController;
@RestController//@ResponseBody和@Controller的集合
public class HelloWorldQuick {
@RequestMapping("hello")//这句上面截图忘记了
public String helloWorldQuick(){
return "Hello World Quick Create Spring Boot!";
}
}
因为新换了macOS系统使用苹果系统的IDEA没找见setting,不能配置maven
没有配置maven环境变量导致项目找不到maven库
这里还遇到了配置环境变量时创建bash_profile文件导致全部环境变量不可用,解决方案
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
vim ~/.bash_profile
:
填写wq
保存退出