如果活动配置文件与regex关键字匹配,如何在Spring中有条件地启用类?

问题描述

我有一个Spring Boot Controller,我想仅在某些配置文件处于活动状态时才启用它。但是,我不想使用硬编码来编码所有这些配置文件,而是想使用正则表达式或其他方法来实现此目的。

考虑这段代码

export const dataService = () => {
const [data,setData] = useState([
{
dataName:'name1',dataVisible:false,dataUrl:'http://localhost:8080/get_document/41gfdg-rewr-432fdsg'
},{
dataName:'name2',dataUrl:'http://localhost:8080/get_document/gfd6765-hf34-hgf34'
},{
dataName:'name3',dataUrl:'http://localhost:8080/get_document/hgfhbv-dsad-jy675j'
},{
dataName:'name4',dataUrl:'http://localhost:8080/get_document/lokg12-jg9d-hgf'
}])

 const handleChange = (e) => {
        setData(prevState => ({
            ...prevState,[e.target.name]: e.target.checked
        }))
    }

return(
<div>
 {data.map((item,index) => {
                            return(
                                <Grid>
                                    <Checkbox
                                        name={item.dataName}
                                        onChange={handleChange}
                                        checked={item.dataVisible}
                                        />
                                    <label>{item}</label>
                                </Grid>
                            )
                        })}
<div>
)

}

现在,我希望仅在活动配置文件属于以下内容时启用此控制器:@Controller @Profile("#{'spring.profiles.active' matches 'eu'}") // this line is not working public class HomeController{ // ... removed other code for brevity } 。 “ ”是此处的关键字。我还有更多配置文件,它们中都包含dev1_eu,dev2_eu,dev3_eu,qa1_eu,qa2_eu,qa3_eu,prod1_eu,prod2_eu,prod3_eu,test1_eu,test2_eu,并且我希望仅在此类eu配置文件中启用上述控制器。现在,拥有这么多配置文件是否是一个好习惯,尚待争论,但是假设这不能更改(即无法减少配置文件的数量)。由于如果配置文件的数量较少,我可能会这样做:

*eu*

该怎么做呢?如果不是@Profile,那么还有其他更简便的方法可以实现这一目标吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)