3.要注册—个bean销毁回调,可以:(选择—项) A.配置bean实例,以使用"prototype"作用域 B.用@PostDestroy 注解回调方法 C.用@PreDestroy 注解回调方法 D.在bean配置中添加@Lazy 注解
时间: 2024-02-27 11:53:50 浏览: 29
要注册一个 Bean 销毁回调,可以使用 @PreDestroy 注解回调方法。
因此,答案是 C。@PreDestroy 注解可以用来指定一个方法,该方法会在 Bean 销毁之前调用。在该方法中,可以执行一些清理操作,例如释放资源等。
示例代码如下:
```java
public class MyBean {
@PreDestroy
public void destroy() {
// 在销毁之前执行一些清理操作
}
}
```
在 Spring 容器关闭时,会调用所有 Bean 的销毁方法,从而执行清理操作。
需要注意的是,@PreDestroy 注解只有在 Bean 使用单例作用域时才有效。如果 Bean 使用原型作用域,那么在销毁之前不会调用销毁方法。
另外,还有一种方式可以注册 Bean 销毁回调,即实现 DisposableBean 接口并实现 destroy() 方法。但是,使用 @PreDestroy 注解更加方便和灵活。
相关问题
5.要注册一个 bean 销毁回调,可以: (选择一项)
要注册一个bean销毁回调,在Spring中有两种方法:
1. 实现DisposableBean接口,在类中实现destroy()方法。
```java
public class MyBean implements DisposableBean {
// Bean的初始化代码
@Override
public void destroy() throws Exception {
// Bean的销毁代码
}
}
```
2. 在XML配置文件或注解中指定destroy-method属性,它将被自动调用以在销毁bean时执行清理代码。
在XML配置文件中:
```xml
<bean id="myBean" class="com.example.MyBean" destroy-method="cleanup"/>
```
或者在使用Java Config时:
```java
@Bean(destroyMethod = "cleanup")
public MyBean myBean() {
return new MyBean();
}
```
其中`cleanup`是自定义的销毁回调方法名,它将在销毁bean时被调用。
16.哪个作用域表示每次从容器请求Bean时,都会获得一个新实例?
在Spring中,原型(Prototype)作用域表示每次从容器请求Bean时,都会获得一个新实例。与之相对的是单例(Singleton)作用域,单例作用域表示整个应用中只有一个实例,每次请求都会返回同一个实例。
在XML配置文件中,可以使用<bean>标签的scope属性来指定Bean的作用域,例如:
```xml
<bean id="myBean" class="com.example.MyBean" scope="prototype"/>
```
在Java Config中,可以使用@Scope注解来指定Bean的作用域,例如:
```java
@Bean
@Scope("prototype")
public MyBean myBean() {
return new MyBean();
}
```
使用原型作用域可以避免多线程下的并发问题,同时也可以节省内存。但需要注意的是,原型作用域的Bean在使用完之后,需要手动进行销毁操作,否则可能会导致资源泄漏。