springboot详解1:

本文详细介绍了SpringBoot的重要组件,包括pom.xml的配置、程序入口类的作用、测试类的使用以及配置文件的应用。文章还探讨了SpringBoot的快速构建项目的方法。在自动配置方面,解释了JavaConfig和autoconfig的工作原理,强调了条件注解在决定是否应用配置类中的关键作用。
摘要由CSDN通过智能技术生成

Springboot

1.springboot重要组件:

1.pom.xml

比如:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<!-- pom模型版本 maven为2-3都是4.0.0 -->
	<modelVersion>4.0.0</modelVersion>
	<!-- 当前继承了springboot提供的父项目(编码格式,) -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.0.RELEASE</version>
		<relativePath />
	</parent>
	<!-- 项目描述信息 -->
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<!-- 自己指明当前项目的配置 -->
	<properties>
		<java.version>1.8</java.version>
		<skipTests>true</skipTests>
		<!-- <start-class>com.example.demo.HelloWorld</start-class> -->
	</properties>
	<!-- 注入依赖 -->
	<dependencies>
		<!-- starter===>启动器 ,作用:简化依赖 spring-boot-starter 是springboot的核心启动器 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!--web启动器,管理web的jar包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-launcher</artifactId>
			<scope>test</scope>
		</dependency>

		<!--测试启动器,管理测试需要的jar包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<!-- 屏蔽掉原来的依赖,使用我们自己需要的依赖,使用springboot中的test依赖 -->
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

	</dependencies>
	<!-- 配置maven插件 -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

在pom.xml文件中,springboot的maven插件能够以maven文件的方式提供支持。这个插件能够将springboot应用打包成可执行的jar/war文件,以普通的jar文件打包运行springboot。

命令:

1.spring-boot:repackage,默认goal。

执行的是二次打包,保留第一次打包的项目信息。

2.spring-boot:run :来启动项目

3.spring-boot:build-info:生成配置文件信息

打包过程:

找到相应执行栏,输入clean package

2.程序入口类

springboot程序需要一个程序入口,在一个类中有主方法,并且加上专用的注解@SpringBootApplication,那么这个类就是程序注解类。

这个注解的功能是

1.让这个类称为一个配置类

2.可以自动扫描用户的包

3.最重要的是:开启springboot的自动配置功能

3.测试类

使用不同的springboot,那么相对的test文件也会不同。在这个类中加上注解@SpringBootTest即可

注意的是:测试类比如和程序入口类在同包下,或者是子包下的关系在可以执行代码!!

如果测试类和入口类(配置类)的位置比较复杂或者混合,也可以自己去明确指定

@SpringBootTest(classes={DemoApplication.class})
class Demo ApplicationTests{
    @Test
    void contextLoads(){
        
    }
}

4.配置文件

在Springboot项目中,有一个配置文件就可以了

springboot的配置文件,默认支持俩种方式:1.properties文件application.properties(平铺式)

server.port=8081
server.servlet.context-path=/
server.tomcat.uri-encoding=utf-8

2.yaml文件application.yml(层叠式)

server:
   port:8082
   servlet:
   context-path:/
   tomcat:
   uri-encoding:utf-8

俩种文件的配置内容一致,但是配置的

格式不同。俩个文件同时存在,优先使用properties文件中的配置。

2.快速构建项目:

(下面三种方式,如果有需要的话可以留言,后续出文章)

1.在线使用initizr生成基本的项目

2.使用springboot-cli工具生成项目

3.在STS中直接创建springboot项目

3.自动配置

1.javaconfig

1.Xml配置方式

2.Annotation配置方式

3.JavaConfig配置方式

前俩种都是spring中的,而在boot中使用javaconfig配置。

User和Group类要配置到spring容器中

如果是xml方式的话,就是在xml中配置标签即可

如果是annotation方式的话,在类上面加入@Component注解即可

如果是JavaConfig方式的话,编写一个java的配置类,类上使用@Configuration注解,再配置上bean注入注解

@Configuration 
public class AppConfig{
    @Bean
    public User user(Group group){
        User user=new User();     user.setGroup(group);
        return user;
    }
    @Bean
    public Group group(){
        return new Group();
    }
}
该配置类放到springboot入口类的包下或者其子包下,会被自动扫描读取到,其本质上和xml配置以及annotation配置的原理是一样的,只是变了另一种形式。

测试类:

@SpringBootTest 
class DemoApplicationTests{
    @Autowired
    private Useruser;
    @Test void contextLoads(){    System.out.println(user);
 System.out.println(user.getGroup());
  }
}

再次申明:和入口类同包或子包下面的配置类可以被自动扫描到并读取。

2.autoconfig

什么是springboot中的自动配置:

例如springmvc框架,我们不几乎不需要做任何配置,就可以使用到springmvc中的功能并且成功运行。这就是因为引入springmvc框架后,springboot就已经自动帮我们把这个框架都默认配置好了。

但是在配置的关键是:

每个配置类中,都可以添加条件注解,来判断是否满足某一个条件,从而决定是否读取该配置类.如果不满足那么一定不会进行自动配置。

具体流程如下 :

  1. 程序入口类上使用 @SpringBootApplication 注解
  2. @SpringBootApplication 注解又包含了@EnableAutoConfiguration(开启自动配置) 注解
  3. @EnableAutoConfiguration 注解又导入(@Import)了 AutoConfigurationImportSelector (自动配置选项器)类
  4. AutoConfigurationImportSelector 中,定义了一个方法 getCandidateConfigurations(获取后代的自动配置)
@Configuration(proxyBeanMethods = false)//规定这个方法必须是false
@ConditionalOnWebApplication(type = Type.SERVLET)//必须是web项目
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
WebMvcConfigurer.class })//必须有这些class文件
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)//必须不能有这个类
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
TaskExecutionAutoConfiguration.class,
ValidationAutoConfiguration.class })
//如果这些要求都符合了才可以自动配置
public class WebMvcAutoConfiguration {
//..
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值