spring5

IOC

@Component
public class MailService {
    @Autowired(required = false)
    ZoneId zoneId = ZoneId.systemDefault();
 
    @PostConstruct
    public void init() {
        System.out.println("Init mail service with zoneId = " + this.zoneId);
    }
 
    @PreDestroy
    public void shutdown() {
        System.out.println("Shutdown mail service");
    }
}

beanNameAware BeanClassLoadeAware beanFactoryAware

Aware

是的,Spring 框架中还有其他类似的接口,这些接口允许 Bean 在被 Spring 容器管理时感知到更多的上下文信息。以下是一些常见的接口:

1. BeanFactoryAware

这个接口允许一个 Bean 感知到它所在的 Spring 容器(即 BeanFactory)。通过实现这个接口,Bean 可以在运行时获取到 BeanFactory 的引用,从而可以访问容器中的其他 Bean 或者执行一些与容器相关的操作。

2. ApplicationContextAware

这个接口是 BeanFactoryAware 的扩展,它允许一个 Bean 感知到它所在的 Spring 应用上下文(即 ApplicationContext)。通过实现这个接口,Bean 可以在运行时获取到 ApplicationContext 的引用,从而可以访问上下文中的其他 Bean、事件系统、资源文件等。

3. EnvironmentAware

这个接口允许一个 Bean 感知到它所在的 Spring 环境(即 Environment)。通过实现这个接口,Bean 可以在运行时获取到 Environment 的引用,从而可以访问环境中的属性、配置文件等。

4. ResourceLoaderAware

这个接口允许一个 Bean 感知到它所在的 Spring 资源加载器(即 ResourceLoader)。通过实现这个接口,Bean 可以在运行时获取到 ResourceLoader 的引用,从而可以访问和操作 Spring 管理的资源文件。

5. MessageSourceAware

这个接口允许一个 Bean 感知到它所在的 Spring 消息源(即 MessageSource)。通过实现这个接口,Bean 可以在运行时获取到 MessageSource 的引用,从而可以访问和操作 Spring 管理的国际化消息。

6. ApplicationEventPublisherAware

这个接口允许一个 Bean 感知到它所在的 Spring 事件发布器(即 ApplicationEventPublisher)。通过实现这个接口,Bean 可以在运行时获取到 ApplicationEventPublisher 的引用,从而可以发布和处理 Spring 应用事件。

7. EntityFactoryAware

这个接口允许一个 Bean 感知到它所在的 Spring 实体工厂(即 EntityFactory)。通过实现这个接口,Bean 可以在运行时获取到 EntityFactory 的引用,从而可以访问和操作 Spring 管理的实体对象。

8. BeanClassLoaderAware

这个接口允许一个 Bean 感知到它所在的 Spring 类加载器(即 ClassLoader)。通过实现这个接口,Bean 可以在运行时获取到 ClassLoader 的引用,从而可以访问和操作 Spring 管理的类资源。

9. BeanPostProcessor

这个接口允许一个 Bean 在被 Spring 容器实例化之后,对其他 Bean 进行后处理。通过实现这个接口,Bean 可以在其他 Bean 的初始化之前或之后执行一些操作,例如修改 Bean 的属性、添加 Bean 的方法等。

10. BeanFactoryPostProcessor

这个接口允许一个 Bean 在被 Spring 容器实例化之前,对 BeanFactory 进行后处理。通过实现这个接口,Bean 可以在 BeanFactory 初始化之前执行一些操作,例如修改 BeanFactory 的配置、添加 BeanFactory 的后处理器等。

这些接口为 Spring 中的 Bean 提供了丰富的上下文信息和扩展能力,使得 Bean 可以更好地与 Spring 容器和应用上下文进行交互。

beanPostProcessor

AOP

事务

jdbcTemplate