栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot2 No.2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot2 No.2

SpringBoot-HelloWorld SpringBoot的创建

创建一个Mavan工程,添加父项目:


        org.springframework.boot
        spring-boot-starter-parent
        2.3.4.RELEASE
    

如果想开发Web,需要在中添加以下依赖:


            org.springframework.boot
            spring-boot-starter-web
        
SpringBoot的开发

1. 主程序类,添加@SpringBootApplication,告诉SpringBoot这是一个SpringBoot应用。

2. 添加配置文件:application.properties,可以通过server.port修改服务器的端口号,默认8080。

配置文件的值最终会绑定到某个类上,这个类会在容器中创建对象。

Maven 编译遇到 Process terminated 问题

原因:配置文件 settings.xml 出错

解决方案:格式化编辑好之后再复制粘贴。

    
      nexus-aliyun
      *
      Nexus aliyun
      http://maven.aliyun.com/nexus/content/groups/public
    

父项目

用来做依赖管理,子项目无需定义依赖版本号。

修改版本号:

1、查看spring-boot-dependencies里面规定当前依赖的版本用的key。
2、在当前项目里面重写配置,例如:
    
        5.1.43
    
starter场景启动器

1、spring-boot-starter-* : *表示某种场景,只要引入starter,这个场景的所有常规需要依赖都可以自动引入;

2、*-spring-boot-starter: 第三方提供的简化开发的场景启动器。

自动配好Web常见功能

SpringBoot帮我们自动配置了所有Web开发的常见场景,例如:前端控制器、视图解析器、文件上传解析器、字符编码过滤器等。

包扫描路径

默认包扫描路径:主程序所在包及其下面的所有子包,例如:"com.xxx.boot"。

修改包扫描路径:

1. @SpringBootApplication(scanBasePackages="com.xxx")

2. 如图所示:

//@SpringBootApplication

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.xxx")

@Configuration

1. @Configuration:告诉SpringBoot这是一个配置类 == Spring中的XML配置文件。

        如果@Configuration(proxyBeanMethods = true),使用代理对象调用方法,SpringBoot会检查这个组件在容器中是否已经存在,存在则不创建,不存在才创建,可以解决组件的依赖问题。

        如果@Configuration(proxyBeanMethods = false),SpringBoot不会检查这个组件在容器中是否已经存在,每次都是新创建的,可以提高SpringBoot的运行速度。

2. @Bean:标注在方法上,给容器中添加组件,方法名作为组件id,返回类型是组件类型,返回值是组件在容器中的实例。@Bean("xxx"):自定义组件id为xxx,不再以方法名作为组件id。

@Import

@Import({User.class, DBHelper.class}):给容器中自动创建这两个类型的组件,组件的名字(id)默认就是全类名。

@Conditional

条件装配:满足Conditional指定的条件,才能进行组件注入。

@ImportResource

@ImportResource("classpath: xxx.xml"):导入Spring的XML配置文件。

配置绑定

方式1. @Component + @ConfigurationProperties:不可用于第三方提供的类。

@Component    //只有在容器中的组件,才拥有SpringBoot提供的功能
@ConfigurationProperties(prefix = "car")
public class Car {
    ...
}

方式2. @EnableConfigurationProperties + @ConfigurationProperties:可用于第三方提供的类。

@ConfigurationProperties(prefix = "car")
public class Car {
    ...
}

@EnableConfigurationProperties(Car.class)
//1、开启配置绑定功能
//2、把这个组件自动注册到容器中
@Configuration
public class MyConfig {
    ...
}

自动配置注解
@SpringBootApplicat
    @SpringBootConfiguration
        @Configuration:代表当前类是一个配置类
    @EnableAutoConfiguration
        @AutoConfigurationPackage
            @Import(AutoConfigurationPackages.Registrar.class):
            利用Registrar给容器导入一系列组件,即主启动类所在包下的所有组件
        @Import(AutoConfigurationImportSelector.class)
            利用getAutoConfigurationEntry(annotationMetadata);方法,
            给容器批量导入一些组件:所有自动配置在启动时默认全部加载,
            最终按照条件装配规则(@Conditional),按需配置。
    @ComponentScan:包扫描注解
        

修改默认配置

总结:

1. SpringBoot先加载所有的自动配置类:xxxAutoConfiguration;

2. 每个自动配置类按照条件(@Conditional)进行生效,默认都会绑定配置文件指定的值。值从xxxProperties.class里面拿,xxxProperties.class和配置文件(application.properties)进行了绑定;

3. 生效的配置类会给容器中装配很多组件;

4. 容器中有了这些组件,就相当于有了这些功能;

5. 如何定制化配置:

        a. 用户在配置类中使用@Bean替换底层的组件;

        b. 用户修改这个组件在配置文件(application.properties)中的值。

步骤:xxxAutoConfiguration ---> 组件生效 ---> 从xxxProperties.class里面拿值 ----> application.properties

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874010.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号