Bean Java配置



Spring 系列教程


前面介紹了Bean的XML配置方法,從Spring 3.0開始,可以使用java代碼配置Bean,替代XML配置。

Java配置與注解配置不同,Java配置是把Java代碼文件當作配置文件,注解配置是在實際Java類中使用注解設置依賴關系。

Java配置也會用到一些注解,主要有:@Configuration@ComponentScan@Bean

1. 通過@Configuration注解創建Java配置類

@Configuration注解標注的類是配置類,用於配置Bean之間依賴關系。

@Import注解允許從另一個配置Java/XML文件加載bean定義。

示例:SpringConfig.java

package com.qikegu.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ComponentScan;

@Configuration // 表明這是個Bean的Java配置類
public class SpringConfig {
}

2. 通過@Bean注解定義Bean

要定義一個Bean,可以通過:

  1. 給一個方法加@Bean注解
  2. 方法返回Bean實例

Spring容器會注冊這個Bean,並將方法名作為Bean ID。

示例:SpringConfig.java

package com.qikegu.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration 
public class SpringConfig {
 
 // 定義 App Bean
 @Bean(initMethod = "init", destroyMethod = "close" ) // 指定初始化回調,銷毀回調
 @Scope("prototype") // 設置Bean作用域
 public App app() { // Bean ID = app
  return new App(); // 返回App Bean
 }
}

3. 注入Bean依賴關系

可以通過讓一個Bean方法調用另一個Bean方法注入依賴項。

示例:SpringConfig.java

package com.qikegu.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {
  
  // 定義 App Bean
  @Bean
  public App app() {
    return new App(logger()); // 調用Bean方法logger()注入Logger Bean實例
  }
  
  /* @Bean
  public App app() {
    App app = new App();
  
    Service[] services = {database(), logger(), mail()};
    app.setServices(services);
    app.setMainService(services[1]);
    app.setId(1234);
    return app;
  } */
  
  // 定義 Database Bean
  @Bean
  public Database database() {
   return new Database();
  }
 
  // 定義 Logger Bean
  @Bean
  public Logger logger() {
    return new Logger();
  }
  
  // 定義 Mail Bean
  @Bean
  public Mail mail() {
    return new Mail();
  }
}

4. 讀取配置類

可以使用AnnotationConfigApplicationContext讀取配置類。

示例:Test.java

package com.qikegu.demo.config;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Test {
 public static void main(String[] args) {
  // 使用`AnnotationConfigApplicationContext`讀取配置類
  ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
 }
}

5. 通過Spring容器獲取bean

示例:

App app = context.getBean("app", App.class);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM