Spring 对象作用域

来源:互联网 发布:淘宝小号 周点数查询 编辑:程序博客网 时间:2024/06/06 06:45

– Start
默认情况下, Spring 将创建的对象放在它的容器中缓存,当我们需要某个对象时,Spring 将缓存的对象返回给我们,并不会创建新对象,如果你想让 Spring 每次返回一个新对象该怎么办呢?看看下面的例子吧。

package shangbo.spring.core.example7;public class OutPutService {    public void outPut() {        System.out.println("Hello World");    }}
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd">    <!--         scope 指定对象对象作用域,支持如下值        singleton     默认值        prototype     每次返回新对象        request       Web下可用        session       Web下可用        globalSession Web下可用        application   Web下可用        websocket     Web下可用    -->    <bean class="shangbo.spring.core.example7.OutPutService" scope = "prototype"/></beans>
package shangbo.spring.core.example7;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {    public static void main(String[] args) {        // 实例化 Spring IoC 容器        ApplicationContext context = new ClassPathXmlApplicationContext("example.xml", OutPutService.class);        // 从容器中获得 OutPutService 对象        OutPutService printer = context.getBean(OutPutService.class);        // 使用对象        printer.outPut();    }}

如果你使用 Java 配置元数据,使用 @Scope 注解即可。

package shangbo.spring.core.example8;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Scope;@Configurationpublic class AppConfig {    @Bean    @Scope(value = "prototype")    public OutPutService outPutService() {        return new OutPutService();    }}

更多参见:Spring Framework 精萃
– 声 明:转载请注明出处
– Last Updated on 2017-06-17
– Written by ShangBo on 2017-05-21
– End

原创粉丝点击