Spring bean的销毁和初始化

作用域(@Scope)、初始化(@PostConstruct)、销毁注解(@PreDestroy):
Initialization destroy

@Getter@Setter
public class PeopleObject {
@Value(" l o c a t i o n " ) S t r i n g n a m e ; @ V a l u e ( " {location}") String name; @Value(" {port}")
int age;
public PeopleObject() {
System.out.println(“创建资源对象。。。。。。”);
}
public void openSource() {
System.out.println(“开启资源。。。。。。。”);
}
public void dowork() {
System.out.println("--------dididi 开始干活---------");
}
public void closeResouce() {
System.out.println(“关闭资源!”);
}
}

<!-- DI注解解析器 -->
<context:annotation-config/>
 <!-- IOC注解解析器 -->
 <context:component-scan base-package="Spring_ValueBean"/>
 
<!-- 读取配置文件 -->
<context:property-placeholder location="classpath:service.properties,db.properties"/>

之前;
我们xml配置操作

@SpringJUnitConfig
public class Applications {
	@Autowired
	PeopleObject people1;
	@Autowired
	PeopleObject people2;
	
	@Test
	public void test1() {
		
		System.out.println(people1);
		System.out.println(people2);
		people1.dowork();
	}
}

	现在:

使用Spring帮我1、创建bean对象 2、作用域的范围,3、初始化方法和结束方法
第一部分:创建bean对象
*1⃣️创建bean对象
在对应的类上面贴一个@Component 注解
@Getter@Setter
@Component
public class PeopleObject {
@Value(" l o c a t i o n &quot; ) S t r i n g n a m e ; @ V a l u e ( &quot; {location}&quot;) String name; @Value(&quot; {port}")
int age;
public PeopleObject() {
System.out.println(“创建资源对象。。。。。。”);
}
public void openSource() {
System.out.println(“开启资源。。。。。。。”);
}
public void dowork() {
System.out.println("--------dididi 开始干活---------");
}
public void closeResouce() {
System.out.println(“关闭资源!”);
}
}

*2⃣️xml添加对应包的解析器
<!-- IOC注解解析器 -->
<context:component-scan base-package="Spring_ValueBean"/>

<!-- DI注解解析器 -->
<context:annotation-config/>
 <!-- IOC注解解析器 -->
 <context:component-scan base-package="Spring_ValueBean"/>
<!-- 读取配置文件 -->
<context:property-placeholder location="classpath:service.properties,db.properties"/>
第二步骤:作用域范围(是否是单例和多例)

然后:发现打印的对象是单例的,怎么让他不是单例呢? 怎么设置呢?
Spring_ValueBean.PeopleObject@68c72235
Spring_ValueBean.PeopleObject@68c72235
使用一个注解@Scope–默认的情况下是单例的,加上一个属性的值:@Scope(“prototype”)就不是单例的了。
Spring_ValueBean.PeopleObject@55536d9e
Spring_ValueBean.PeopleObject@747edf66

第三步骤:初始化方法和结束方法
最后使用@PostConstruct注解,//对象构建后执行
	创建资源对象。。。。。。
	开启资源。。。。。。。	
@PreDestroy//资源销毁之前执行
--------dididi 开始干活--------- 
关闭资源!---->	多例的时候不会执行关闭方法(@Scope("prototype"))

总结:讲了三个注解:
1.@Scope–》单例。 @Scope(“prototype”) --》多例
2.@PostConstruct//对象构建后执行
3.@PreDestroy//资源销毁之前执行
源码百度云盘自取:链接:https://pan.baidu.com/s/1y6YldBEL4R282EQVTwS63w 密码:8rsr

猜你喜欢

转载自blog.csdn.net/m0_37871296/article/details/88571132