最近我被要求创建一个新的set PATH=%PATH%;c:\Program Files\Wireshark\
start /B tshark -f -i 1 -w file1.pcap
来(de)激活一个功能。我有两种情况需要做出改变:
profile
在上面的类中,如果配置文件处于活动状态,则不必执行最后两行。我扩展了课程并为其分配了新的个人资料class A {
public void configure(AuthenticationManagerBuilder auth) throws Exception {
SecurityConfigurer ldapConfigurer = securityFactory.ldapAuthenticationProviderConfigurer();
ldapConfigurer.configure(auth);
SecurityConfigurer offlineConfigurer = securityFactory.offlineAuthenticationProviderConfigurer();
offlineConfigurer.configure(auth);
}
}
,并在原始课程中添加了@Profile("notOffline")
。
@Profile("!notOffline")
我必须重构的第二个地方是这样的:
class A {
public void configure(AuthenticationManagerBuilder auth) throws Exception {
SecurityConfigurer ldapConfigurer = securityFactory.ldapAuthenticationProviderConfigurer();
ldapConfigurer.configure(auth);
SecurityConfigurer offlineConfigurer = securityFactory.offlineAuthenticationProviderConfigurer();
offlineConfigurer.configure(auth);
}
}
class B extends A {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
super();
SecurityConfigurer offlineConfigurer = securityFactory.offlineAuthenticationProviderConfigurer();
offlineConfigurer.configure(auth);
}
}
不执行的行取决于方法其余部分使用的变量,而不是返回的变量。我之前制作的方法对于这种情况来说并不是快乐的方法(并且有两种方法调用此方法而不执行)。
经过一段时间后,我意识到更好的方法是在最后一个用class C {
public Something foo() {
code();
code();
code();
thisLineHasNotToBeExecuted();
code();
code();
return something;
}
}
注释的类中添加一个属性,并在启动时将参数传递给tomcat。这样我可以在@Value
内if
使用thisLineHasNotToBeExecuted()
@ConditionalOnProperty
及其子项。
我的方法是否正确?
更多信息:当我们使用ActiveDirectory时,我(de)激活故障转移认证,而在第二个类中,我阻止将用户信息保存在缓存中。
谢谢!
答案 0 :(得分:1)
在第一种情况下使用配置文件是合适的。
'@ ConditionalOnProperty'不是处理第二个用例的正确方法。它通常用于Spring Boot Starter项目的启动配置。
您想要使用属性并添加“if”来决定是否执行'thisLineHasNotToBeExecuted();'走在正确的轨道上。如果该行的执行取决于配置文件,则可以将活动配置文件注入到类中并键入该值。如果您使用的是spring boot配置服务器,请确保添加“@RefreshScope”。