SpringBoot2 No.2

SpringBoot-HelloWorld

SpringBoot的创建

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

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

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

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

SpringBoot的开发

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

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

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

Maven 编译遇到 Process terminated 问题

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

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

    <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

父项目

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

修改版本号:

1、查看spring-boot-dependencies里面规定当前依赖的版本用的key。
2、在当前项目里面重写配置,例如:
    <properties>
        <mysql.version>5.1.43</mysql.version>
    </properties>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值