每次访问代理以获取实例时,我都需要提供基于会话信息的 bean。我怎样才能做到这一点?
现在我尝试了以下。例如:
第一个类定义了一个会话范围的 bean。
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class BeanSession implements Serializable {
private Serializable rootState;
public <T extends Serializable> T getRootState() {
return (T) rootState;
}
public void setRootState(Serializable rootState) {
this.rootState = rootState;
}
}
第二类有一些与他们的领域相关的逻辑,也知道如何提供信息。必须每次都创建 bean,因为信息在线程处理期间可能会发生变化。因此,每次Attribute1访问时,我一定会得到包含新信息的 bean。
@Service
public class Attribute1Service {
@Resource
private BeanSession beanSession;
public void setDefaultValue() {
Configuration configuration = beanSession.getRootState();
configuration.getAttribute1().setValue("VALUE 1");
}
@Bean
public Attribute1 attribute1() {
Configuration configuration = beanSession.getRootState();
return configuration.getAttribute1();
}
}
最后,第三个类声明attribute1as 依赖项来执行自己的逻辑。
@Service
public class Attribute2Service {
@Resource
private BeanSession beanSession;
@Resource
private Processor processor;
@Resource
private Attribute1 attribute1;
public void defineAttribute2() {
Configuration configuration = beanSession.getRootState();
String value = processor.getValue(configuration, attribute1);
configuration.getAttribute2().setValue(value);
}
public void defineAttribute3() {
Configuration configuration = beanSession.getRootState();
String value = processor.getValue(configuration, attribute1);
configuration.getAttribute3().setValue(value);
}
}
我不想从头开始访问信息attribute1
,因为这会在信息提供者和消费者之间造成硬耦合。beanSession
Attribute2Service
慕桂英546537
暮色呼如
相关分类