文章目录
1.介绍springboot2:
springboot2与1的最大区别在于2是根据java8的新特性进行了更新,所以要求使用jdk1.8版本及以上、maven3.3版本及以上、idea2019.1.2版本及以上
2.入门:
官网教程:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.first-application.run
- 检查你的jdk和maven版本,并将idea的默认maven设置为自己的本地maven(在setting的build里面)
- 创建pom:在pom.xml中添加这个
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
- 添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 编写程序入口,然后编写control测试,只要编写完运行程序入口即可
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
注:
- springboot提供了方便的配置修改:
在resource文件夹下编写applicationContexe.properties配置文件可修改如:
server.port= 8888
官方文档查询相关配置:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties
- springboot可简化部署:
添加以下代码后自动将代码打包成jar包,直接在目标服务器执行即可。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3. springboot特性:
3.1 依赖管理:
创建springboot项目,首先要导入一个父依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
他的父依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.4</version>
</parent>
作用:spring-boot-dependencies中规定了各种jar包的版本号,实现自动的版本仲裁。
注:如果导入了非版本仲裁的jar包,则需要写明版本号。
可通过修改properties可以设置自己想要的版本号:
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
starter场景启动器:
可以看到这里我们无需导入版本号:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1、见到很多 spring-boot-starter-* : *就某种场景
2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
3、SpringBoot所有支持的场景
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
4、见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
5、所有场景启动器最底层的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.5.4</version>
<scope>compile</scope>
</dependency>
注:可以看到spring-boot-starter-web中为我们配置好了json、tomcat、webmvc等jar包。
3.2 自动配置:
springboot为我们自动配置好了:
● tomcat
● springMVC
● web常见功能
● 默认的包结构:主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来,如果文件写在了主程序外边则无法被扫描到(想要改变扫描路径:@SpringBootApplication(scanBasePackages=“com.atguigu”))
● 各种配置拥有默认值
● 按需加载所有自动配置项: 引入了哪些场景这个场景的自动配置才会开启
、SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面。
4.容器功能:
4.1 添加组件:
@Configuration
用这个注解代替了原来的xml文件中创建bean并对属性赋值的过程
- 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
- 2、配置类本身也是组件
- 3、proxyBeanMethods:代理bean的方法
@Configuration
public class config {
@Bean
public user user01(){
return new user("smith",30);
}
}
Full和Lite模式:
配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断(轻量级)
配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式
Full:(proxyBeanMethods = true)【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
Lite:(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
组件依赖必须使用Full模式默认。其他默认是否Lite模式
@Import
使用这个注解给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = true)
public class config {
@Conditional
条件配置,根据注解的条件来判断是否进行装配。
可以标记在类上也可以标记在方法上。
@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
@ImportResource
导入原有的bean.xml配置文件。
@ImportResource("classpath:beans.xml")
public class config {
4.2 配置绑定:
用于在properties配置文件中设定了某些值的情况。
mypet.name = xw
- @Component + @ConfigurationProperties
要先将组件加载进容器,只有在容器中的组件,才会拥有SpringBoot提供的强大功能。
根据前缀查找配置
@Component
@ConfigurationProperties(prefix = "mypet")
public class pet {
public class controller {
@Autowired
com.wu.boot.pojo.pet pet;
@RequestMapping("/pet")
public pet pet(){
return pet;
}
结果:发现pet的name已成功设置为了xw。
- @EnableConfigurationProperties + @ConfigurationProperties
@EnableConfigurationProperties必须写在配置类中(启动类)
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
public class MyConfig {
}
5.简化开发:
5.1 Lombok
现在pom.xml中配置依赖,然后在setting的插件里下载lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
用于实体类的四个注解,分别是:get/set方法,toString方法,无参构造方法,有参构造方法。
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Slf4j 用于在日志中添加日志:log.info(“请求来了”);
@Slf4j
@RestController
public class controller {
@Autowired
com.wu.boot.pojo.pet pet;
@RequestMapping("/pet")
public pet pet(){
log.info("请求来了");
return pet;
}
5.2 devtools 热更新
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
ctrl + F9 进行更新
5.3 spring initailizr
spring的初始化向导