1.Springboot是什么
Springboot是一个快速开发框架,能够帮助我们快速整合第三方常用框架
2.Springboot自动配置原理
1.在Springboot启动引导类启动时,会扫描到`@SpringbootApplication`注解,
继而扫描到其中的`@EnableAutoConfiguration`注解,这个注解就是自动配置
的关键所在。
2.在其中的`@Import`注解引入`@AutoConfigurationImportSelector`类,
调用其`selectImports()`方法,最终读取META-INF/spring.factories配置文件
运行设定好的配置类。
各个配置类根据条件注解@ConditionalXXX注解决定是否初始化配置类中的bean。
3.Springboot自定义starter演示
1.创建redis-springboor-autoconfigure项目
a.pom文件依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
b.创建RedisProperties配置类
@ConfigurationProperties(prefix = "redis")
public class RedisProperties {
private String host = "localhost";
private int port = 6379;
作用:其他项目引入时,可以在application.yml中指定ip和端口。
c.创建RedisAutoConfiguration配置类
@Configuration
@EnableConfigurationProperties(RedisProperties.class)
@ConditionalOnClass(Jedis.class)
public class RedisAutoConfiguration {
@Bean
@ConditionalOnMissingBean(name = "jedis")
public Jedis jedis(RedisProperties redisProperties){
System.out.println("创建Jedis对象。。。");
return new Jedis(redisProperties.getHost(), redisProperties.getPort());
}
}
d.在META-INF/spring.factories配置文件中配置信息
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.springboot.redis.RedisAutoConfiguration.
前者固定写法,后者为自定义RedisAutoConfiguration 的全限定名。\为回车。
有多个自动配置以 , 分割。
2.创建redis-spring-boot-starter项目
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
// 自定义的自动配置依赖
<groupId>com.springboot</groupId>
<artifactId>redis-spring-boot-autoconfigure</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
3.其他项目引入starter依赖即可使用
Springboot部署
1.打成jar包 --> 官方推荐
2.打成war包 -->打包方式改为war
1.修改启动引导类 --> 使其继承SpringBootServletInitializer类
2.重写configure方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootTestApplication.class);
}
3.在pom文件中指定打包名称,
并防止应用上下文所导致的项目访问资源加载不到的问题
<build>
<finalName>war包名称</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>