2019.12.1笔记——springboot应用

本文详细介绍了SpringBoot的应用,包括通过TomcatServletWebServerFactory配置Tomcat,SpringBoot项目的打包,自动配置原理,@ConfigurationProperties与@Value注入的区别,JSR303参数校验,以及SPEL表达式的使用。还涵盖了SpringBoot测试的相关依赖和测试类的创建。
摘要由CSDN通过智能技术生成

TomcatServletWebServerFactory

我们可以在配置类中通过配置TomcatServletWebServerFactory这个bean来配置tomcat的一些参数
在这里插入图片描述
比如下面可以配置项目的端口

@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory(){
   
    TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
    // 配置端口
    tomcatServletWebServerFactory.setPort(80);
    return tomcatServletWebServerFactory;
}

spring boot项目打包

打成jar包的插件,只有加入下面的插件才能打成jar包

<build>
    <plugins>
        <!--
          用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar) 值得注意的是,如果没有引用spring-boot-starter-parent做parent,
          且采用了上述的第二种方式,这里也要做出相应的改动
        -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--fork :  如果没有该项配置,devtools不会起作用,即应用不会restart -->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

jar包方式启动
在这里插入图片描述
springboot项目打成war包不需要插件,不过启动方式和jar包不同,需要继承SpringBootServletInitializer并重写configure方法

@SpringBootApplication
public class AppStart extends SpringBootServletInitializer {
   

    // 继承SpringBootServletInitializer重写configure方法就会让springboot以war包的方式启动
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
   
        return builder.sources(AppStart.class);
    }

    public static void main(String[] args) {
   
        SpringApplication.run(AppStart.class);
    }
}

springboot自动配置

spring boot可以通过@Conditional扩展注解作用(判断是否满足当前指定条件)来实现动态注入,只有满足当前指定条件才会注入。

注解 描述
@ConditionalOnJava 系统的java版本是否符合要求
@ConditionalOnBean 容器中存在指定Bean;
@ConditionalOnMissingBean 容器中不存在指定Bean;
@ConditionalOnExpression 满足SpEL表达式指定
@ConditionalOnClass 系统中有指定的类
@ConditionalOnMissingClass 系统中没有指定的类
@ConditionalOnSingleCandidate 容器中只有一个指定的Bean,或者这个Bean是首选Bean
@ConditionalOnProperty 系统中指定的属性是否有指定的值
@ConditionalOnResource 类路径下是否存在指定资源文件
@ConditionalOnWebApplication 当前是web环境
@ConditionalOnNotWebApplication 当前不是web环境

下面演示一下@ConditionalOnBean的实际效果,假设有下面三个bean对象

@Component
public class A {
   
    @Autowired
    private B b;

    public void test(){
   
        System.out.println(b);
    }
}
@Component
public class B {
   
}
@Component
public class C {
   
}

我们运行测试类

@Test
public void Test() {
   
    a.test();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值