spring的bean是只有一个么?

我举个具体例子,比如我现在有一个controller层里面我增加一个了常规属性,比如叫start
现在我启动项目,第一个接口可以改这个数,第二个接口可以查询。
我先第一个借口改成2,第二个接口查询,请问能查到么?
如果我这两个接口的调用者不同,比如说是不同用户在不同浏览器调用的,另一个用户查询能查到前一个用户储存的么?
由此衍生出我现在的问题,
就是我现在把bean放在工厂里,用map标志储存。
正常我用getkey就能得到bean,可是现在我想用key,我的想法是再实现类里面增加一个字段,然后再map中取出的时候,就把他的这个属性改成我所用的KEY(多个key可能对应一个value)。
但是我不太确定,这个会不会产生互相影响?

要是一个key对应一个bean,那直接 @Autowired Map<String ,你的bean类> map; 就行了
要是把key放在bean里面,那也不是多个key对应一个bean,而是会一个key可能对应多个bean

1.对象的属性变化时,只要对象不变,属性变化都会看到的。比如你在宿舍放了包薯片,出去一会再回来就没了,因为你的舍友发现了这些薯片
spring默认bean实例化都是单例的,很少会看到在bean里定义属性,定义一些静态变量公共使用的倒是有
2.用工厂存储bean,用的时候根据bean的名字去调用,spring本身就是这套逻辑,你也可以再包装一下,把所有的bean从spring容器里拿出来,按你的想法放到map里,定义好key映射关系,需要用的时候传key取出对应的bean
但是,我觉得你可以考虑别的方案

  • spring中的bean默认是单例的,即默认情况下只有一个

  • 如果每次请求需要的key都相同,定义为常量好了。如果每次都不同,定义为局部变量就行。

1.封装一个方法,bean中可以获取你要作为key的属性,然后封装到map中返回;
2.可以换种思路:中map类型注入;

那当然有问题,所以你看你交给spring管理的bean,有这种修改成员变量值的操作嘛

spring中controller默认是单例的,所以你对同一个属性的操作是可以都访问到的。但是注意,这样操作会有线程安全问题,所以推荐时间一些线程安全的类来做成员变量。
第二个问题你可以在成员变量上存储一个线程安全的map,把你想要的bean初始化进去就得到Map<String,BeanObj>这样的结构,你使用的时候想用哪个取哪个就可以了。有一些策略设计模式也会这么使用。

1、考虑下spring的的作用域,用prototype或者request级别;
2、使用ThreadLocal复制bean,保证bean的安全;
3、代码段加类锁;