package com.example.demo_2_1;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
/**
* Created by WangBin on 2017/4/10.
*
*/
@Service
@Scope("prototype")//每次调用新建一个bean示例
public class DemoPrototypeService {
}
package com.example.demo_2_1;
import org.springframework.stereotype.Service;
/**
* Created by WangBin on 2017/4/7.
*
* 单例
*/
@Service//默认为 Scope("singleton") 一个容器只有一个 bean实例
public class DemoSingletonService {
}
package com.example.demo_2_1;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* Created by WangBin on 2017/4/10.
*
*/
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ScopeConfig.class);
DemoSingletonService service1= context.getBean(DemoSingletonService.class);
DemoSingletonService service2= context.getBean(DemoSingletonService.class);
System.err.println(service1==service2);//返回 true 证明 该对象 在堆内存只存在一个
DemoPrototypeService serviceA1 = context.getBean(DemoPrototypeService.class);
DemoPrototypeService serviceA2 = context.getBean(DemoPrototypeService.class);
System.err.println(serviceA1==serviceA2);//返回 false 因为 在 bean上 注解了 Prototype 所以每次调用对象都新建一个bean实例
System.err.println(service1.equals(service2));//equals 也可以用于对象比较 堆内存地址
context.close();
}
}
package com.example.demo_2_1;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* Created by WangBin on 2017/4/10.
*/
@Configuration
@ComponentScan("com.example.demo_2_1")
public class ScopeConfig {
}