SpringBoot的相关使用

1 Dependency Management 依赖管理

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

一个对所依赖jar包进行版本管理的管理器。
1:如果dependencies里的dependency自己没有声明version元素,那么maven就

会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果

没有就会报错,告诉你必须为dependency声明一个version

2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准

2 Starters 启动器
spring-boot-starter-* ,其中 * 是一种特殊类型的应用程序。这种命名结构是为了在需要找到启动器时提供帮助

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

3 应用程序的位置
在这里插入图片描述
将应用程序放在Appliction下的子包下,或者相同目录下

4 自动配置
Spring Boot 自动配置尝试根据添加的 jar 依赖项自动配置 Spring 应用程序

通过向@configuration 类中添加@enableautoconfiguration 或@springbootapplication 注释来选择自动配置。
禁用特定自动配置类不想要的特定自动配置类正在被应用

  • 可以使用@springbootapplication 的 exclude 属性来禁用它们
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class MyApplication {
}
  • @enableautoconfiguration exclude 和 exclusudename
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

5 依赖注入

如果按照上面的建议构造代码(将应用程序类定位在根包中) ,则可以添加@componentscan,而不需要任何参数。您的所有应用程序组件(@component、@service、@repository、@controller 等)都自动注册为 Spring Beans。

6 @springbootapplication 注释

@ enableautoconfiguration: 启用 Spring Boot 的自动配置机制

  • @ComponentScan: enable @Component scan on the package where the application is located (see the best practices)

    @ componentscan: 在应用程序所在的包上启用@component scan (参见最佳实践)

  • @Configuration: allow to register extra beans in the context or import additional configuration classes

    @ configuration: 允许在上下文中注册额外的 bean 或者导入额外的配置类

如果不希望某些特性,可以自己配置

Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {

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

}

7 运行你的应用程序

1 作为打包应用程序运行

$ java -jar target/myapplication-0.0.1-SNAPSHOT.jar

2 使用MAVEN

$ mvn spring-boot:run

3 开发工具

8 Developer Tools 开发工具

Spring Boot 包括一组额外的工具,可以使应用程序开发体验更加愉快。Spring-boot-devtools 模块可以包含在任何项目中,以提供额外的开发时特性。

1 添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

为了使用 不管启动应用程序所使用的类加载器是什么,请设置

spring.devtools.restart.enabled=true

生产环境中不可以使用

spring.devtools.restart.enabled=false

8.1 自动重启
使用 spring-boot-devtools 的应用程序在类路径上的文件发生更改时自动重新启动

当 DevTools 监视类路径资源时,触发重新启动的唯一方法是更新类路径

  • 在 IntelliJ IDEA 中,构建项目(Build + → + Build Project)具有同样的效果。

  • 如果使用构建插件,为 Maven 运行 mvn 编译或为 Gradle 运行 Gradle 构建将触发重启。

Spring Boot 提供的重新启动技术使用了两个类加载器。不更改的类(例如,那些来自第三方 jar 的类)被装载到基本类加载器中。您正在积极开发的类装载到重新启动的类加载器中。当应用程序重新启动时,重新启动的类加载器将被丢弃,并创建一个新的类加载器。这种方法意味着应用程序重新启动通常比“冷启动”快得多,因为基本类加载器已经可用并且已经填充了。

8.2 不包括资源

某些资源在更改时不一定需要触发重新启动。例如,Thymeleaf 模板可以就地编辑。默认情况下,更改/META-INF/maven、/META-INF/resources、/resources、/static、/public 或/templates 中的资源不会触发重新启动

如果希望自定义这些排除项,

spring.devtools.restart.exclude=static/**,public/**

8.3 添加资源
对不在类路径上的文件进行更改时,可能希望重新启动或重新加载应用程序。为此,可以使用 pring.devtools.restart.additional-paths 属性配置其他路径以监视更改

spring.devtools.restart.additional-paths 

8.4 禁用重启
如果不想使用重启功能,可以使用 spring.devtools.restart.enabled 属性禁用它

 spring.devtools.restart.enabled =false

(这样做仍然会初始化重新启动类加载器,但它不会监视文件的更改)。

如果您需要完全禁用重启支持那么您需要在调用 SpringApplication.run (…)之前将 spring.devtools.restart.enabled System 属性设置为 false,如下例所示:

public static void main(String[] args) {
    System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(MyApp.class, args);
}

8.5 自定义重启类加载器

默认情况下,IDE 中的任何打开项目都会加载“重启”类加载器和任何常规加载器。Jar 文件装载了“ base”类加载器。如果您处理的是多模块项目,并且不是每个模块都导入到 IDE 中,则可能需要自定义一些内容。为此,可以创建 META-INF/spring-devtools。属性文件。

属性文件可以包含前缀为 restart.exclude 和 restart.include 的属性。Include 元素是应该拉到“ restart”类加载器中的项,exclude 元素是应该下推到“ base”类加载器中的项。属性的值是应用于类路径的正则表达式,

estart.exclude.companycommonlibs=/mycorp-common-[\\w\\d-\\.]+\\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w\\d-\\.]+\\.jar

8.6 远程应用

Spring Boot 开发人员工具并不局限于本地开发。您还可以在远程运行应用程序时使用几个特性。远程支持是可选的,因为启用它可能会带来安全风险。只有在受信任的网络上运行或使用 SSL 进行安全保护时,才应该启用它。如果这两个选项都不可用,则不应使用 DevTools 的远程支持。您永远不应该在生产部署上启用支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值