Spring 每个用户实现不同的业务规则
我正在维护使用Java中if…else语句的软件,以便为每个用户实现不同的业务规则。我知道这并不是实施这一要求的最佳方式 我的一个想法是使用Spring并使用applicationContext.getBeanBenName+user.getkey。这将允许在业务逻辑中可能出现差异的地方动态加载bean。这里唯一不好的是,主代码与Spring绑定,我真的认为这没什么大不了的 我的问题是,这可以通过Drools、Mule等实现吗?我对这两个框架都不太了解,但可以就采用哪种方法提供一些建议 谢谢 我的问题是,这可以通过Drools、Mule等实现吗 这是一个非常开放的问题,可能更适合程序员。看看这本书 我的一个想法是使用Spring和 applicationContext.GetBeanBenName+user.getkey。这会 允许在可能存在差异的点动态加载bean 发生在业务逻辑中。这里唯一不好的是 代码和Spring绑定在一起,我真的不认为Spring是个大问题 成交 您可以使逻辑可插拔,而无需将自己绑定到Spring。使用applicationContext.getBean违背了依赖注入的目的,因此我不建议这样做。试着这样做: 定义封装用户特定逻辑的接口 为每种类型的用户创建接口的实现 将接口的所有实现自动连接到需要使用它们的bean中。 需要时,根据用户的类型选择实现。 我对这两个框架都不太了解,但可以在这方面提供一些建议 走哪条路 首先,将逻辑隐藏在接口后面,并将特定于用户的内容封装到单独的类中。一旦一切都取决于界面,如果以后需要将特定于用户的内容移动到规则引擎,那么在不破坏应用程序其余部分的情况下,这样做应该很容易 代码示例:Spring 每个用户实现不同的业务规则,spring,rules,Spring,Rules,我正在维护使用Java中if…else语句的软件,以便为每个用户实现不同的业务规则。我知道这并不是实施这一要求的最佳方式 我的一个想法是使用Spring并使用applicationContext.getBeanBenName+user.getkey。这将允许在业务逻辑中可能出现差异的地方动态加载bean。这里唯一不好的是,主代码与Spring绑定,我真的认为这没什么大不了的 我的问题是,这可以通过Drools、Mule等实现吗?我对这两个框架都不太了解,但可以就采用哪种方法提供一些建议 谢谢 我
public enum UserType {
FOO, BAR
}
public interface UserStrategy {
public void doStuff();
public UserType getUserType();
}
@Component
public class FooUserStrategy implements UserStrategy {
public void doStuff() {
// foo specific stuff
}
public UserType getUserType() {
return UserType.FOO;
}
}
@Component
public BarUserStrategy implements UserStrategy {
public void doStuff() {
// bar specific stuff
}
public UserType getUserType() {
return UserType.BAR;
}
}
@Service
public class ClassThatUsesStrategies {
private Map<UserType, UserStrategy> map = new HashMap<>();
public void doUserTypeSpecificStuffForUser(User user) {
UserStrategy s = map.get(user.getUserType);
s.doStuff();
}
@Autowired
public void setUserStrategies(List<UserStrategy> strategies) {
for (UserStrategy current : strategies) {
map.put(current.getUserType(), current);
}
}
}