首页 > 其他分享 >Spring注解开发入门(三)Bean的生命周期和作用范围

Spring注解开发入门(三)Bean的生命周期和作用范围

时间:2022-10-23 01:22:30浏览次数:43  
标签:生命周期 Spring bean javax public Bean import 注解 annotation


1.Bean的作用域,其实就是bean采用单例模式还是非单例模式 放在网络编程环境是指bean在http请求的作用范围的过程 !

 

在java类上加上@Scope注解,可以设置bean的作用范围

package com.oxygen.dao.impl;

import com.oxygen.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;


@Repository("bookDao")
@Scope("prototype")
public class BookDaoImpl implements BookDao {

    public void save() {
        System.out.println("Book Dao Save...");
    }

}

 

2.bean的生命周期是指bean的初始化和销毁的过程。 这里自定义了bean的初始化和销毁方法,要用到javax.annotation这个包里的注解。 如果在IntelliJ Idea中发现没有这两个注解,也没法import javax.annotation包时,需要在pom文件中添加javax的依赖。

   <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      <version>1.3.2</version>
    </dependency>

 

示例代码:

package com.oxygen.dao.impl;

import com.oxygen.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;


@Repository("bookDao")
@Scope("singleton")
public class BookDaoImpl implements BookDao {

    public void save() {
        System.out.println("Book Dao Save...");
    }

    @PostConstruct
    public void init() {
        System.out.println("Book Dao init..");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("Book Dao destroy..");
    }
}

这个注解@PostConstruct 标记了谁是初始化方法。

这个注解@PreDestroy标记了谁是初始化方法。

加上这两个注解后Spring注解就能执行被它们标记的方法,单@PreDestory标记的方法则需要注意,它不会默认执行。

若需要执行@PreDestroy标记的方法,则需要关闭Spring容器或者关闭钩子(Hook)

 ApplicationContext没有关闭容器的方法,我们用AnnotationConfigApplicationContext里面的close方法来关闭容器。

以下展示了关闭容器来调用销毁bean的方法。

AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class);
        BookDao bookDao= (BookDao) ctx.getBean("bookDao");
        bookDao.save();
        ctx.close();

 

标签:生命周期,Spring,bean,javax,public,Bean,import,注解,annotation
From: https://www.cnblogs.com/majestyking/p/16817750.html

相关文章

  • Spring —— 初识
    简介  Spring家族   SpringFramework系统架构   ......
  • Spring的@Configiration和@ComponentScan注解代替xml配置文件
    1.使用xml配置文件配置Spring容器:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:context="http:/......
  • 微服务组件--注册中心Spring Cloud Eureka分析
    Eureka核心功能点【1】服务注册(register):EurekaClient会通过发送REST请求的方式向EurekaServer注册自己的服务,提供自身的元数据,比如ip地址、端口、运行状况指标的url、......
  • SpringBoot 创建项目连接mysql数据库
    Spring 创建项目1.创建一个springboot项目2.点击File---- New---- project项目名称可以随便填写...3. Springboot版本尽量不要最新版,怕你们驾驭不了......
  • SpringBoot的 META-INF/spring.factories有什么用
    1,spring.factories文件中的内容,将来都会转化Properties对象。spring.factories内容示例org.springframework.data.repository.core.support.RepositoryFactorySupport=org.s......
  • 2流高手速成记(之四):SpringBoot整合redis及mongodb
    最近很忙,好不容易才抽出了时间,咱们接上回上次我们主要讲了如何通过SpringBoot快速集成mybatis/mybatis-plus,以实现业务交互中的数据持久化,而这一切都是基于关系型数据库(SQ......
  • SpringCloudConfig简单使用
    动态修改配置文件信息,避免每次改动都需要发版的问题SpringCloudConfig是一个分布式的配置管理方案,包含了server端和client两个部分,同时我们需要创建个git仓库,这个仓库就......
  • Spring基础使用一
    Spring基础使用一概念:Spring是一个开源框架,它是由RodJohnson创建的,同时是为了解决企业应用开发的复杂性而创建的,Spring可以使用基本的JavaBean来完成以前只可能由EJB完成......
  • 单例 Bean 的线程安全问题
    最近面试遇到一个问题:单例Bean的线程安全问题怎么解决的。之前了解但是没有深究它的解决方法。大部分时候我们并没有在项目中使用多线程,所以很少有人会关注这个问题。......
  • SpringBoot 后台管理系统竟然出了详细教程!
    其实项目网上有很多了,但是教程比较详细的没多少,今天分享的项目从安装部署到代码具体功能都有很详细都说明。eladmin是一款基于SpringBoot2.1.0、Jpa、SpringSecurit......