逆水行舟 —— SpringBoot

SpringBoot入门

入门Demo就不写了,我们记一点理论的东西

入门 级 pom.xml

    <!--jdk版本管理-->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <!--已该项目作为父工程,内部对我们常用依赖的版本做了管理,不会出现版本冲突问题-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent><dependencies>
        <!--web项目的web启动器,会自动引入web相关依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

这个项目已经对我们常用的依赖版本进行了统一管理,我们的项目以这个项目为父工程,就不用担心依赖的版本冲突问题了

配置文件的属性注入

先说说以前的通过注解方式的的属性注入

  • @Configuration注解:声明我们当前类是一个配置类

  • @PropertySource注解:指定属性文件的路径 比如:classpath:jdbc.properties

  • @Value("${jdbc.url}")为属性注入值

  • 通过@Bean将 某方法声明为一个注册Bean的方法,Spring会自动调用该方法,将方法的返回值加入Spring容器中。

上面的这种方式只能注入基本数据类型,SpringBoot有自己的一套注入方式,支持复杂类型属性注入

  • 在类上通过@ConfigurationProperties注解声明当前类为属性读取类

  • @ConfigurationProperties(prefix = "jdbc") 读取属性文件中,前缀为jdbc的值。

  • 在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致

  • 需要注意的是,这里我们并没有指定属性文件的地址,所以我们需要把jdbc.properties名称改为application.properties,这是SpringBoot默认读取的属性文件名:

到这里我们就已经把属性文件中的值注入到了类中

  • @Configuration

  • @EnableConfigurationProperties(属性读取类.class)

  • 然后通过@Autowired注入该属性读取类 或 通过构造,或通过申明有@Bean的方式自动注入

  • - @Autowired
      private JdbcProperties prop;
    ​
    - private JdbcProperties prop;
      public JdbcConfig(Jdbcproperties prop){
          this.prop = prop;
      }
    - @Bean
      public Datasource dataSource(JdbcProperties prop){
          // ...
      

当然还有更加优雅的注入方式,如果一段属性只有一个类需要使用,我们不用将这一段属性装载到属性中供消费,

而是直接在需要的地方申明即可:如下所示

@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    return dataSource;
}

自动配置的原理

约定大于配置原则

            1:@SpringBootConfiguration,申明当前类为SpringBoot配置类

@SpringBootApplication    2:@EnableConfiguration,默认配置是否生效,取决于我们引入的依赖

                 3:@ComponentScan,开启注解扫描,扫描对象为启动类所在的包机器子包

通过@SpringBootApplication这个注解了一个大概,@EnableConfiguration就是自动配置的关键所在

在我们的项目中,SpringBoot已经为我们提供了默认的配置,通过我们引入的依赖决定是否生效,如果我们不想使用默认配置,我们可以Application.properties/yml中自定义值进行覆盖默认值

Actuator:对系统的监控

  • 是SpringBoot提供的对应用系统监控的集成功能,可以对系统进行配置查看,相关功能统计等,在Spring Cloud中,主要完成微服务的监控,可以查看微服务之间的数据处理和调用,当出现异常时,可以快速定位问题所在

  • 其功能和Dubbo的监控中心类似,区别就是一个需要专门部署,而这个是存在每一个Boot工程中的

这个我之前没了解过,下面上代码

<!--SpringBoot的 Actuator-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

application.properties

server.port=8888
#actuator端口 
management.server.port=9001
#修改访问路径  2.0之前默认是/   2.0默认是 /actuator  可以通过这个属性值修改  
management.endpoints.web.base-path=/monitor
#开放所有页面节点  默认只开启了health、info两个节点
management.endpoints.web.exposure.include=*
#显示健康具体信息  默认不会显示详细信息  
management.endpoint.health.show-details=always

#自定义info信息
info.company.username=chen
info.company.age=23
info.company.address=成都市动物园附近

#从pom文件中读取信息
[email protected]@
[email protected]@
[email protected]@
[email protected]@

然后我们启动项目,准备访问 :http://localhost:9001/monitor/health

对,这个不是我们想看到的页面,有点晚了,明天还上班,明天补上

  

猜你喜欢

转载自www.cnblogs.com/msi-chen/p/10947125.html
今日推荐