国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot3中的屬性綁定注解和YMAL配置文件、日志

這篇具有很好參考價值的文章主要介紹了SpringBoot3中的屬性綁定注解和YMAL配置文件、日志。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 常用注解

SpringBoot摒棄XML配置方式,改為全注解驅動

1. 組件注冊

@Configuration、@SpringBootConfiguration
@Bean、@Scope
@Controller@Service、@Repository@Component
@Import
@ComponentScan

步驟:

1、@Configuration 編寫一個配置類
2、在配置類中,自定義方法給容器中注冊組件。配合@Bean
3、或使用@Import 導入第三方的組件

2. 條件注解

如果注解指定的條件成立,則觸發(fā)指定行為

@ConditionalOnXxx
@ConditionalOnClass如果類路徑中存在這個類,則觸發(fā)指定行為
@ConditionalOnMissingClass如果類路徑中不存在這個類,則觸發(fā)指定行為
@ConditionalOnBean如果容器中存在這個Bean(組件),則觸發(fā)指定行為
@ConditionalOnMissingBean如果容器中不存在這個Bean(組件),則觸發(fā)指定行為

例如:@ConditionalOnBean(value=組件類型,name=組件名字):判斷容器中是否有這個類型的組件,并且名字是指定的值

@ConditionalOnRepositoryType (org.springframework.boot.autoconfigure.data)
@ConditionalOnDefaultWebSecurity (org.springframework.boot.autoconfigure.security)
@ConditionalOnSingleCandidate (org.springframework.boot.autoconfigure.condition)
@ConditionalOnWebApplication (org.springframework.boot.autoconfigure.condition)
@ConditionalOnWarDeployment (org.springframework.boot.autoconfigure.condition)
@ConditionalOnJndi (org.springframework.boot.autoconfigure.condition)
@ConditionalOnResource (org.springframework.boot.autoconfigure.condition)
@ConditionalOnExpression (org.springframework.boot.autoconfigure.condition)
@ConditionalOnClass (org.springframework.boot.autoconfigure.condition)
@ConditionalOnEnabledResourceChain (org.springframework.boot.autoconfigure.web)
@ConditionalOnMissingClass (org.springframework.boot.autoconfigure.condition)
@ConditionalOnNotWebApplication (org.springframework.boot.autoconfigure.condition)
@ConditionalOnProperty (org.springframework.boot.autoconfigure.condition)
@ConditionalOnCloudPlatform (org.springframework.boot.autoconfigure.condition)
@ConditionalOnBean (org.springframework.boot.autoconfigure.condition)
@ConditionalOnMissingBean (org.springframework.boot.autoconfigure.condition)
@ConditionalOnMissingFilterBean (org.springframework.boot.autoconfigure.web.servlet)
@Profile (org.springframework.context.annotation)
@ConditionalOnInitializedRestarter (org.springframework.boot.devtools.restart)
@ConditionalOnGraphQlSchema (org.springframework.boot.autoconfigure.graphql)
@ConditionalOnJava (org.springframework.boot.autoconfigure.condition)

3. 屬性綁定

  • @ConfigurationProperties: 聲明組件的屬性和配置文件哪些前綴開始項進行綁定
  • @EnableConfigurationProperties快速注冊注解
    • 使用場景:SpringBoot默認只掃描自己主程序所在的包。如果導入第三方包,即使組件上標注了 @Component、@ConfigurationProperties 注解,也沒用。因為組件都掃描不進來,此時使用這個注解就可以快速進行屬性綁定并把組件注冊進容器

將容器中任意組件(Bean)的屬性值配置文件的配置項的值進行綁定

  • 1、給容器中注冊組件(@Component、@Bean
  • 2、使用@ConfigurationProperties 聲明組件和配置文件的哪些配置項進行綁定

2. YAML配置文件

解決痛點:SpringBoot 集中化管理配置,application.properties。配置多以后難閱讀和修改,層級結構辨識度不高

特點:

  • 設計目標,就是方便人類讀寫
  • 層次分明,更適合做配置文件
  • 使用.yaml.yml作為文件后綴

1. 基本語法

  • 大小寫敏感
  • 使用縮進表示層級關系,k: v,使用空格分割k,v
  • 縮進時不允許使用Tab鍵,只允許使用空格。換行
  • 縮進的空格數(shù)目不重要,只要相同層級的元素左側對齊即可
  • # 表示注釋,從這個字符一直到行尾,都會被解析器忽略。

支持的寫法:

  • 對象鍵值對的集合,如:映射(map)/ 哈希(hash) / 字典(dictionary)
  • 數(shù)組:一組按次序排列的值,如:序列(sequence) / 列表(list)
  • 純量:單個的、不可再分的值,如:字符串、數(shù)字、bool、日期

2. 示例

@Component
@ConfigurationProperties(prefix = "person") //和配置文件person前綴的所有配置進行綁定
@Data //自動生成JavaBean屬性的getter/setter
//@NoArgsConstructor //自動生成無參構造器
//@AllArgsConstructor //自動生成全參構造器
public class Person {
    private String name;
    private Integer age;
    private Date birthDay;
    private Boolean like;
    private Child child; //嵌套對象
    private List<Dog> dogs; //數(shù)組(里面是對象)
    private Map<String,Cat> cats; //表示Map
}

@Data
public class Dog {
    private String name;
    private Integer age;
}

@Data
public class Child {
    private String name;
    private Integer age;
    private Date birthDay;
    private List<String> text; //數(shù)組
}

@Data
public class Cat {
    private String name;
    private Integer age;
}

properties表示法

person.name=張三
person.age=18
person.birthDay=2010/10/12 12:12:12
person.like=true
person.child.name=李四
person.child.age=12
person.child.birthDay=2018/10/12
person.child.text[0]=abc
person.child.text[1]=def
person.dogs[0].name=小黑
person.dogs[0].age=3
person.dogs[1].name=小白
person.dogs[1].age=2
person.cats.c1.name=小藍
person.cats.c1.age=3
person.cats.c2.name=小灰
person.cats.c2.age=2

yaml表示法

person:
  name: 張三
  age: 18
  birthDay: 2010/10/10 12:12:12
  like: true
  child:
    name: 李四
    age: 20
    birthDay: 2018/10/10
    text: ["abc","def"]
  dogs:
    - name: 小黑
      age: 3
    - name: 小白
      age: 2
  cats:
    c1:
      name: 小藍
      age: 3
    c2: {name: 小綠,age: 2} #對象也可用{}表示

3. 細節(jié)

  • birthDay 推薦寫為 birth-day,用-來表示駝峰命名
  • 文本
    • 單引號不會轉義【\n 則為普通字符串顯示】
    • 雙引號會轉義【\n會顯示為換行符
  • 大文本
    • |開頭,大文本寫在下層,保留文本格式,換行符正確顯示
    • >開頭,大文本寫在下層,折疊換行符
  • 多文檔合并
    • 使用---可以把多個yaml文檔合并在一個文檔中,每個文檔區(qū)依然認為內容獨立
    • 多配置文件:文件名可以是application-{profile}.properties/yml,用來指定多個不同的環(huán)境版本;默認使用application主配置文件,通過spring.profiles.active=dev激活指定的配置文件

4. 小技巧:lombok

簡化JavaBean 開發(fā)。自動生成構造器、getter/setter、自動生成Builder模式等

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <!--compile:默認范圍,編譯測試運行都有效 -->
    <scope>compile</scope>
</dependency>

3. 日志配置

1. 簡介

  1. Spring使用commons-logging作為內部日志,但底層日志實現(xiàn)是開放的??蓪悠渌罩究蚣?。
  2. 支持 jullog4j2,logback。SpringBoot 提供了默認的控制臺輸出配置,也可以配置輸出為文件。
  3. logback是默認使用的。
  4. 雖然日志框架很多,但是不用慌,使用 SpringBoot 的默認配置就能工作的很好。

SpringBoot怎么把日志默認配置好的:

  • 1、每個starter場景,都會導入一個核心場景spring-boot-starter
  • 2、核心場景引入了日志的所用功能spring-boot-starter-logging
  • 3、默認使用了logback + slf4j 組合作為默認底層日志
  • 4、日志是系統(tǒng)一啟動就要用,xxxAutoConfiguration是系統(tǒng)啟動好了以后放好的組件,后來用的。
  • 5、日志是利用監(jiān)聽器機制配置好的。ApplicationListener
  • 6、日志所有的配置都可以通過修改配置文件實現(xiàn)。以logging開始的所有配置。

2. 日志格式

2023-06-07T22:18:12.568+08:00  INFO 7700 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2023-06-07T22:18:12.569+08:00  INFO 7700 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms

默認輸出格式:

  • 時間和日期:毫秒級精度
  • 日志級別:ERROR, WARN, INFO, DEBUG, or TRACE.
  • 進程 ID
  • —: 消息分割符
  • 線程名: 使用[]包含
  • Logger 名: 通常是產(chǎn)生日志的類名
  • 消息: 日志記錄的內容

注意: logback 沒有FATAL級別,對應的是ERROR

默認值:參照:spring-boot包additional-spring-configuration-metadata.json文件
默認輸出格式值:"defaultValue": "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"

以上配置使用的SpringBoot版本是:3.0.5

3. 記錄日志

Logger logger = LoggerFactory.getLogger(getClass());

#或者使用Lombok@Slf4j注解

4. 日志級別

  • 由低到高:ALL<TRACE<DEBUG< INFO< WARN< ERROR<FATAL<OFF;

    • 只會打印指定級別及以上級別的日志
    • ALL:打印所有日志
    • TRACE:追蹤框架詳細流程日志,一般不使用
    • DEBUG:開發(fā)調試細節(jié)日志
    • INFO:關鍵、感興趣信息日志
    • WARN:警告但不是錯誤的信息日志,比如:版本過時
    • ERROR業(yè)務錯誤日志,比如出現(xiàn)各種異常
    • FATAL致命錯誤日志,比如jvm系統(tǒng)崩潰
    • OFF關閉所有日志記錄
  • 不指定級別的所有類,都使用root指定的級別作為默認級別

  • SpringBoot日志默認級別INFO

  1. application.properties/yaml中配置logging.level.<logger-name>=<level>指定日志級別
  2. level可取值范圍:TRACE, DEBUG, INFO, WARN, ERROR, FATAL or OFF,定義在 LogLevel類中
  3. root 的logger-nameroot,可以配置logging.level.root=warn,代表所有未指定日志級別都使用 root 的warn 級別

5. 日志分組

比較有用的技巧是:

將相關的logger分組在一起,統(tǒng)一配置。SpringBoot 也支持。比如:Tomcat 相關的日志統(tǒng)一設置

logging.group.tomcat=org.apache.catalina,org.apache.coyote,org.apache.tomcat
logging.level.tomcat=trace

SpringBoot 預定義的兩個組:

Name Loggers
web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener

6. 文件輸出

SpringBoot 默認只把日志寫在控制臺,如果想額外記錄到文件,可以在application.properties中添加logging.file.name or logging.file.path配置項。也可以直接在日志配置文件中直接指定

常用的logback-spring.xml模板:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1000 seconds">
    <springProperty scope="context" name="spring.application.name" source="spring.application.name" defaultValue="app"/>
    <timestamp key="date" datePattern="yyyyMMdd"/>
    <property name="colorfulPattern"
              value="%blue(%d{MM-dd HH:mm:ss}) [%boldYellow(%thread)] | %highlight(%-5level) | %boldGreen(%logger) %X{clientIp} %X{operateId} - %highlight(%msg) %n"/>
    <property name="defaultPattern"
              value="%d{MM-dd HH:mm:ss} [%thread] | %-5level | %logger %X{clientIp} %X{operateId} - %msg %n"/>
    <property name="log.base_path" value="E:\data\logs"/>
    <!-- 日志文件大小,超過這個大小將被壓縮 -->
    <property name="log.max.size" value="100MB"/>

    <!--控制臺輸出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${colorfulPattern}</pattern>
            <!--            <pattern>${defaultPattern}</pattern>-->
        </encoder>
    </appender>

    <appender name="trace.appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.base_path}/${spring.application.name}/trace.${spring.application.name}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                ${log.base_path}/archive/${spring.application.name}/trace.${spring.application.name}.%d{yyyyMMdd}.%i.log.zip
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${log.max.size}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${defaultPattern}</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>TRACE</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="info.appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.base_path}/${spring.application.name}/info.${spring.application.name}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                ${log.base_path}/archive/${spring.application.name}/info.${spring.application.name}.%d{yyyyMMdd}.%i.log.zip
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${log.max.size}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${defaultPattern}</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="debug.appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.base_path}/${spring.application.name}/debug.${spring.application.name}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                ${log.base_path}/archive/${spring.application.name}/debug.${spring.application.name}.%d{yyyyMMdd}.%i.log.zip
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${log.max.size}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${defaultPattern}</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="error.appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.base_path}/${spring.application.name}/error.${spring.application.name}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                ${log.base_path}/archive/${spring.application.name}/error.${spring.application.name}.%d{yyyyMMdd}.%i.log.zip
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${log.max.size}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${defaultPattern}</pattern>
        </layout>
        <!-- 下面為配置只輸出error級別的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 不丟失日志.默認的,如果隊列的80%已滿,則會丟棄TRACT、DEBUG、INFO級別的日志 -->
    <!-- 更改默認的隊列的深度,該值會影響性能.默認值為256 -->
    <!-- 添加附加的appender,最多只能添加一個 -->
    <appender name="trace.async" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>256</queueSize>
        <includeCallerData>true</includeCallerData>
        <appender-ref ref="trace.appender"/>
    </appender>
    <!-- http rest 請求日志 -->
    <logger name="cn.felord.common.http.RestBodyAdvice" level="TRACE"/>
    <logger name="cn.felord.app.mapper" level="DEBUG"/>
    <!-- dev 環(huán)境調試  -->
    <springProfile name="dev">
        <logger name="org.springframework.security" level="TRACE" additivity="false" >
            <appender-ref ref="stdout"/>
        </logger>
        <logger name="org.springframework.security.oauth2" level="DEBUG" additivity="false" >
            <appender-ref ref="stdout"/>
        </logger>
        <logger name="org.springframework.web" level="TRACE" additivity="false" >
            <appender-ref ref="stdout"/>
        </logger>
    </springProfile>

    <root level="info">
        <appender-ref ref="stdout"/>
        <appender-ref ref="info.appender"/>
        <appender-ref ref="debug.appender"/>
        <appender-ref ref="error.appender"/>
        <appender-ref ref="trace.async"/>
    </root>
</configuration>

7. 文件歸檔與滾動切割

歸檔:每天的日志單獨存到一個文檔中。
切割:每個文件10MB,超過大小切割成另外一個文件。

  1. 每天的日志應該獨立分割出來存檔。如果使用logback(SpringBoot 默認整合),可以通過application.properties/yaml文件指定日志滾動規(guī)則。
  2. 如果是其他日志系統(tǒng),需要自行配置(添加log4j2.xmllog4j2-spring.xml
  3. 支持的滾動規(guī)則設置如下
配置項 描述
logging.logback.rollingpolicy.file-name-pattern 日志存檔的文件名格式(默認值:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
logging.logback.rollingpolicy.clean-history-on-start 應用啟動時是否清除以前存檔(默認值:false
logging.logback.rollingpolicy.max-file-size 存檔前,每個日志文件的最大大?。J值:10MB
logging.logback.rollingpolicy.total-size-cap 日志文件被刪除之前,可以容納的最大大?。J值:0B)。設置1GB則磁盤存儲超過 1GB 日志后就會刪除舊日志文件
logging.logback.rollingpolicy.max-history 日志文件保存的最大天數(shù)(默認值:7)

8. 自定義配置

通常配置 application.properties 就夠了。當然也可以自定義。比如:

日志系統(tǒng) 日志系統(tǒng) 自定義
Logback logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging) logging.properties

最佳工作實踐:自己要寫日志配置文件,配置文件名加上 xx-spring.xml

9. 切換日志組合

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

log4j2支持XML、JSON、YAML和properties四種配置文件格式文章來源地址http://www.zghlxwxcb.cn/news/detail-510143.html

10. 工作實踐

  1. 導入任何第三方框架,先排除它的日志包,因為SpringBoot底層控制好了日志
  2. 修改 application.properties 配置文件,就可以調整日志的所有行為。如果不夠,可以編寫日志框架自己的配置文件放在類路徑下就行,比如logback-spring.xmllog4j2-spring.xml
  3. 如需對接專業(yè)日志系統(tǒng),也只需要把 logback 記錄的日志灌倒 kafka之類的中間件,這和SpringBoot沒關系,都是日志框架自己的配置,修改配置文件即可
  4. 業(yè)務中使用slf4j-api記錄日志。不要再 System.out.println()

到了這里,關于SpringBoot3中的屬性綁定注解和YMAL配置文件、日志的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot3之配置文件(學習SpringBoot3的配置這一篇足夠)

    SpringBoot3之配置文件(學習SpringBoot3的配置這一篇足夠)

    1.1 SpringBoot3簡介 SpringBoot 幫我們簡單、快速地創(chuàng)建一個獨立的、生產(chǎn)級別的 Spring 應用(說明:SpringBoot底層是Spring) ,大多數(shù) SpringBoot 應用只需要編寫少量配置即可快速整合 Spring 平臺以及第三方技術! SpringBoot的主要目標是: 為所有 Spring 開發(fā)提供更快速、可廣泛訪問的入

    2024年01月18日
    瀏覽(30)
  • 【踩坑日志】SpringBoot讀取nacos配置信息并提取信息中的IP地址(配置屬性解析異常+排錯記錄)

    【踩坑日志】SpringBoot讀取nacos配置信息并提取信息中的IP地址(配置屬性解析異常+排錯記錄)

    緣起 :項目需讀取nacos中動態(tài)的TDengine數(shù)據(jù)庫連接信息并提取IP,一個并不復雜的操作,但作為一個nacos知識淺薄的菜雞,我愣是捯飭了幾個小時……慚愧慚愧…… 異常代碼 報錯信息 報錯核心: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Coul

    2024年01月19日
    瀏覽(30)
  • SpringBoot3自動配置原理

    SpringBoot3自動配置原理

    遵循約定大約配置的原則,在boot程序啟動后,起步依賴中的一些bean對象會自動注入到ioc容器 看一下我們前面寫的代碼有沒有達到自動配置的效果呢? 沒有自動,我們寫了配置類,寫了@Import注解,所以并沒有達到自動配置的效果。那怎么辦呢?接下來我們通過翻看源碼的方

    2024年01月22日
    瀏覽(32)
  • 【微服務~原始真解】Spring Cloud —— 配置綁定和配置屬性校驗

    【微服務~原始真解】Spring Cloud —— 配置綁定和配置屬性校驗

    ??這里是【秒懂·云原生】,關注我學習云原生不迷路 ??如果對你有幫助,給博主一個免費的點贊以示鼓勵 歡迎各位??點贊??評論收藏?? 【秒懂·云原生】 目前主要更新微服務,一起學習一起進步。 主要介紹Spring Cloud —— 配置綁定和配置屬性校驗 所謂“配置綁定”就

    2024年02月02日
    瀏覽(17)
  • Java --- springboot3依賴管理和自動配置機制

    Java --- springboot3依賴管理和自動配置機制

    目錄 一、依賴管理機制 二、自動配置機制? 三、自動配置流程 ?? 、為什么導入 starter-web 所有相關依賴都導入進來? ①、開發(fā)什么場景,導入什么 場景啟動器。 ②、maven依賴傳遞原則。A-B-C: A就擁有B和C ③、導入 場景啟動器。 場景啟動器 自動把這個場景的所有核心依賴

    2024年02月07日
    瀏覽(23)
  • Spring屬性注解對配置項名稱的自動轉換

    ???????在Spring中,我們經(jīng)常需要將配置文件中的屬性值注入到Java類中。Spring提供了兩個主要的注解來實現(xiàn)這一功能: @Value 和 @ConfigurationProperties 。其中 @ConfigurationProperties 支持將配置項名稱與Java類中的屬性名進行自動轉換,包括 \\\' - \\\'?和\\\' 駝峰命名 \\\'的轉換;而 @Value 不支

    2024年02月15日
    瀏覽(18)
  • 高版本springboot3.1配置Eureka客戶端問題

    高版本springboot3.1配置Eureka客戶端問題

    只需要按上面配置好,然后高版本的Eureka,不需要@EnableEurekaClient這個注解了,直接SpringBoot啟動,就可以注冊到注冊中心。 /*********************************************************/ /** ?* 開啟eureka客戶端功能 ?*/ //@EnableEurekaClient /** ?* @EnableEurekaClient和@EnableDiscoveryClient都讓注冊中心能夠發(fā)

    2024年02月10日
    瀏覽(17)
  • SpringBoot實現(xiàn)注解的屬性動態(tài)注入。以ElasticSearch的java查詢的indexName為例

    最近接了個需求,需要每天從ElasticSearch(下稱es)中取出數(shù)據(jù)然后持久化到mysql數(shù)據(jù)庫里,而我們項目的es里的數(shù)據(jù)都是以日期作為index來存儲的,那么就需要用程序每天定時進行拉取。我們用springboot的spring-boot-starter-data-elasticsearch(類似mybatis的框架)進行數(shù)據(jù)CRUD時需要為實

    2023年04月08日
    瀏覽(19)
  • springboot3整合consul實現(xiàn)服務注冊和配置管理快速入門

    springboot3整合consul實現(xiàn)服務注冊和配置管理快速入門

    服務注冊: 配置管理: 注冊中心的比較: 在微服務的世界中,服務注冊是必不可少的?,F(xiàn)在比較流行的也就是Consul和Nacos,Zookeeper沒有管理界面,一般不建議使用,而Eureka已經(jīng)處于停更,并且本身就存在很多bug,一般不建議使用! 我之前寫過一篇spring boot整合nacos實現(xiàn)服務注

    2024年04月16日
    瀏覽(23)
  • 【Docker】RocketMQ5.1.0的配置部署與基于SpringBoot3.0.5的代碼基礎配置

    【Docker】RocketMQ5.1.0的配置部署與基于SpringBoot3.0.5的代碼基礎配置

    JAVA 17 SpringBoot 3.0.5 CentOS 7.5 Rocket 5.1.0 1.1 查看鏡像 1.2 拉取鏡像 1.3 查看已拉取鏡像 1.4 創(chuàng)建掛載文件夾 1.4.1 創(chuàng)建Broker掛載文件夾 1.4.2 創(chuàng)建NameServer掛載文件夾 1.5 啟動容器以復制配置文件 1.5.1 啟動NamerServer容器 1.5.2 復制NameServer啟動腳本 1.5.3 修改腳本文件 1.5.4 停止并刪除Name

    2024年02月12日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包