默认情况下,存取服务方法是非同步的,所以无法阻止同步执行这些函数。
事实上,因为服务是单例的,可以被同时使用,你必须非常小心服务中存储状态。
或者采用容易(和更好的)途径并不在y service中存储状态。
你可以通过把service放置于特定的作用域来改变这样的行为:
• prototype -一个新的service每次被注入到其他类时创建
• request - 一个新的service在每次请求时创建
• flash - 一个新的service只在当前或下个请求时创建
• flow - 在web flows中, service将存在于flow的作用域
• conversation - 在web flows中, service将存在于会话的作用域。根flow和它的子 flows
• session - 一个service被创建用于session的作用域
• singleton (默认) - 只有一个实例的service,任何时候都存在
假如你的service为flash, flow 或 conversation 作用域,它需要实现java.io.Serializable 并只用于 Web Flow上下文为了启用一个作用域,在你的类中添加一个静态scope属性,其值为上面所述的作用域之一:static scope = "flow"