亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用JavaConfig配置Spring的流程步驟

 更新時(shí)間:2025年05月26日 10:45:01   作者:霧緣枯  
JavaConfig 是 Spring 框架提供的一種基于 Java 的配置方式,它通過使用 @Configuration 注解標(biāo)記的類來替代傳統(tǒng)的 XML 配置文件,本文給大家介紹了使用JavaConfig配置Spring的流程步驟,需要的朋友可以參考下

一、什么是 JavaConfig?

JavaConfig 是 Spring 框架提供的一種基于 Java 的配置方式。它通過使用 @Configuration 注解標(biāo)記的類來替代傳統(tǒng)的 XML 配置文件。JavaConfig 的核心思想是“約定優(yōu)于配置”,通過注解和代碼來定義 Bean 及其依賴關(guān)系。

1. 核心注解

  • @Configuration:標(biāo)記一個(gè)類為配置類,相當(dāng)于 XML 配置文件。

  • @Bean:標(biāo)記一個(gè)方法為 Bean 的定義方法,方法的返回值會(huì)被注冊(cè)為 Spring 容器中的 Bean。

  • @ComponentScan:自動(dòng)掃描指定包下的組件(如 @Component、@Service@Repository 等)。

  • @Import:引入其他配置類。

  • @PropertySource:加載外部屬性文件。

2. 與 XML 配置的對(duì)比

  • XML 配置:通過 <bean> 標(biāo)簽定義 Bean,依賴關(guān)系通過 <property> 或 <constructor-arg> 配置。
  • JavaConfig:通過 @Bean 方法定義 Bean,依賴關(guān)系通過方法參數(shù)或直接調(diào)用其他 @Bean 方法實(shí)現(xiàn)。

二、JavaConfig 的優(yōu)勢(shì)

1. 類型安全

JavaConfig 是基于 Java 代碼的,因此在編譯時(shí)就可以檢查類型是否正確,而 XML 配置只能在運(yùn)行時(shí)發(fā)現(xiàn)錯(cuò)誤。

2. 代碼可讀性

JavaConfig 使用直觀的 Java 代碼,比 XML 更易于閱讀和維護(hù)。

3. 靈活性

JavaConfig 允許在配置中使用條件邏輯、循環(huán)等編程特性,而 XML 配置則較為死板。

4. 與 IDE 的集成

JavaConfig 可以充分利用 IDE 的代碼提示、重構(gòu)和調(diào)試功能,而 XML 配置則缺乏這些支持。

5. 減少配置冗余

通過 @ComponentScan 和 @Conditional 等注解,可以減少大量重復(fù)配置。

三、JavaConfig 的核心用法

1. 定義配置類

使用 @Configuration 注解標(biāo)記一個(gè)類為配置類:

@Configuration
public class AppConfig {
    // 配置 Bean 的方法
}

2. 定義 Bean

使用 @Bean 注解標(biāo)記一個(gè)方法,方法的返回值會(huì)被注冊(cè)為 Bean:

@Bean
public DataSource dataSource() {
    return new HikariDataSource();
}

3. 自動(dòng)掃描組件

使用 @ComponentScan 注解自動(dòng)掃描指定包下的組件:

@Configuration
@ComponentScan("config")
public class AppConfig {
}

4. 引入其他配置類

使用 @Import 注解引入其他配置類:

@Configuration
@Import({DataSourceConfig.class, ServiceConfig.class})
public class AppConfig {
}

5. 加載屬性文件

使用 @PropertySource 注解加載外部屬性文件:

@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig {
    @Value("${database.url}")
    private String dbUrl;
}

四、JavaConfig 的完整示例

以下是一個(gè)完整的 JavaConfig 示例,展示了如何配置數(shù)據(jù)源、Service 和事務(wù)管理。

1. 配置數(shù)據(jù)源

import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import javax.sql.DataSource;
 
@Configuration
public class DataSourceConfig {
 
    @Bean
    public DataSource dataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydb?useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("secret");
        dataSource.setMaximumPoolSize(20);
        dataSource.setMinimumIdle(5);
        return dataSource;
    }
}

2. 配置 Service

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class ServiceConfig {
 
    @Bean
    public UserService userService() {
        return new UserService();
    }
}

3. 配置事務(wù)管理

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
 
import javax.sql.DataSource;
 
@Configuration
public class TransactionConfig {
 
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

4. 主配置類

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
 
@Configuration
@Import({DataSourceConfig.class, ServiceConfig.class, TransactionConfig.class})
public class AppConfig {
}

5. 啟動(dòng)類 

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.example.service.UserService;
 
public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        UserService userService = context.getBean(UserService.class);
 
        // 使用 userService
        userService.doSomething();
    }
}

五、JavaConfig 的高級(jí)用法

1. 條件化配置

使用 @Conditional 注解實(shí)現(xiàn)條件化配置:

@Bean
@Conditional(DevEnvironmentCondition.class)
public DataSource dataSource() {
    return new HikariDataSource();
}

2. 多環(huán)境配置

使用 @Profile 注解實(shí)現(xiàn)多環(huán)境配置:

@Bean
@Profile("dev")
public DataSource devDataSource() {
    return new HikariDataSource();
}
 
@Bean
@Profile("prod")
public DataSource prodDataSource() {
    return new BasicDataSource();
}

3. 動(dòng)態(tài)注冊(cè) Bean

通過實(shí)現(xiàn) BeanDefinitionRegistryPostProcessor 動(dòng)態(tài)注冊(cè) Bean:

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinitionRegistry;
import org.springframework.beans.factory.config.BeanDefinitionRegistryPostProcessor;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class DynamicBeanConfig implements BeanDefinitionRegistryPostProcessor {
 
    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        // 動(dòng)態(tài)注冊(cè) Bean
    }
 
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        // 處理 BeanFactory
    }
}

以上就是使用JavaConfig配置Spring的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于JavaConfig配置Spring的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java設(shè)計(jì)模式之原型模式詳解

    Java設(shè)計(jì)模式之原型模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之原型模式詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java內(nèi)存泄漏問題排查與解決

    Java內(nèi)存泄漏問題排查與解決

    大家好,本篇文章主要講的是Java內(nèi)存泄漏問題排查與解決,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Java?Io?File文件操作基礎(chǔ)教程

    Java?Io?File文件操作基礎(chǔ)教程

    這篇文章主要介紹了Java?Io?File文件操作,在這里需要注意File只能訪問文件以及文件系統(tǒng)的元數(shù)據(jù)。如果你想讀寫文件內(nèi)容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile,需要的朋友可以參考下
    2022-05-05
  • SpringCloud  OpenFeign 參數(shù)傳遞和響應(yīng)處理的詳細(xì)步驟

    SpringCloud  OpenFeign 參數(shù)傳遞和響應(yīng)處理的詳細(xì)步驟

    本文給大家講解SpringCloud  OpenFeign 參數(shù)傳遞和響應(yīng)處理的詳細(xì)步驟,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-02-02
  • Spring中@ExceptionHandler注解的使用方式

    Spring中@ExceptionHandler注解的使用方式

    這篇文章主要介紹了Spring中@ExceptionHandler注解的使用方式,@ExceptionHandler注解我們一般是用來自定義異常的,可以認(rèn)為它是一個(gè)異常攔截器(處理器),需要的朋友可以參考下
    2024-01-01
  • Java NIO實(shí)現(xiàn)群聊系統(tǒng)

    Java NIO實(shí)現(xiàn)群聊系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java NIO實(shí)現(xiàn)群聊系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java 二分法詳解幾種實(shí)現(xiàn)方法

    java 二分法詳解幾種實(shí)現(xiàn)方法

    這篇文章主要介紹了java 二分法詳解幾種方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java程序打印奧林匹克標(biāo)志方法詳解

    Java程序打印奧林匹克標(biāo)志方法詳解

    這篇文章主要介紹了Java程序打印奧林匹克標(biāo)志方法詳解,需要的朋友可以參考下。
    2017-09-09
  • 如何在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫(kù)

    如何在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫(kù)

    這篇文章主要介紹了在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫(kù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java?poi?讀取單元格null或者空字符串方式

    java?poi?讀取單元格null或者空字符串方式

    這篇文章主要介紹了java?poi?讀取單元格null或者空字符串方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論