Conditional 按照條件註冊bean

2021-08-25 02:36:48 字數 2243 閱讀 9278

@conditional 通過改註解能判讀根據條件動態建立bean

person類

public class person 

@override

public string tostring() ';

}public person(string name, int age)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

}

配置類

import com.myspring.condition.linuxcondition;

import com.myspring.condition.windowscontidion;

import com.myspring.entity.person;

import org.springframework.context.annotation.*;

@componentscan(value = "com.myspring")

@configuration

public class mainconfig2

@conditional(linuxcondition.class)

@bean("linus")

public person person02()

}

新建linuxcondition 實現 condition 介面

import org.springframework.beans.factory.beanfactory;

import org.springframework.beans.factory.config.configurablebeanfactory;

import org.springframework.beans.factory.support.beandefinitionregistry;

import org.springframework.context.annotation.condition;

import org.springframework.context.annotation.conditioncontext;

import org.springframework.core.env.environment;

import org.springframework.core.type.annotatedtypemetadata;

public class linuxcondition implements condition

return false;

}}

新建windowscondition 實現 condition 介面

package com.myspring.condition;

import org.springframework.context.annotation.condition;

import org.springframework.context.annotation.conditioncontext;

import org.springframework.core.env.environment;

import org.springframework.core.type.annotatedtypemetadata;

public class windowscondition implements condition

return false;

}}

測試類

@test

public void test2()

// 獲取環境變數 windows 10

string property = environment.getproperty("os.name");

system.out.println(property);

system.out.println(persons);

}

執行結果

person

bill

備註

@conditional 不僅能放在方法上 也能放在類上。

當放在類上時,表明該類的建立都要符號 該註解的條件

條件註解 Conditional

可以讓某乙個bean 在某些條件下 加入ioc容器,其他情況下不加ioc容器。a.準備普通bean b.增加條件bean 給每個bean設定條件,必須實現condition介面 如 oilcarcondition類 public class oilcarcondition implements co...

Conditional條件裝配原理

conditional條件裝配是spring4引入的新特性,與 profile類似 偏向於靜態啟用和配置 而 conditional關注與執行時的動態選擇。api如下 target retention retentionpolicy.runtime documented public inte ce...

Conditional條件初始化bean的配置

在某些情況下我們無法進行bean的初始化。由於某種原因如果繼續初始化很可能丟擲異常。這個時候更好的做法是不進行初始化。例如在資料庫操作時,如果沒有配置資料來源的資訊。我們希望進行datasource的初始化。這時就可以使用 conditional來達到目的。在需要判斷的方法中加入 condition...