当前位置: 首页 > article >正文

SpringBean的配置详解 --中

 

目录

Bean的初始化和销毁方法配置

 Bean的初始化和销毁方法配置

 扩展

 Bean的实例化


Bean的初始化和销毁方法配置

当lazy-init设置为true时为延迟加载,也就是当Spring容器加载的时候,不会立即创建Bean实例,等待用到时再创建Bean实例并存储到单例池中,后续在使用Bean直接从单例池获取即可,本质上Bean还是单例的

  <bean  id="userDao" name="dao" class="com.xfy.dao.Impl.UserDaoImpl" lazy-init="true"  ></bean>

 Bean的初始化和销毁方法配置

Bean在被实例化后,可以执行指定的初始化方法完成一些初始化的操作,Bean在销毁之前也可以执行指定的销毁方法完成一些操作

 <bean  id="userDao" name="dao" class="com.xfy.dao.Impl.UserDaoImpl" lazy-init="true" init-method="init" destroy-method="destroy" ></bean>

public class UserDaoImpl implements UserDao{
    public UserDaoImpl() {
        System.out.println("UserDaoImpl无参方法执行");
    }

    public  void  init(){
        System.out.println("初始化完成");
    }
    public  void destroy(){
        System.out.println("快销毁了");
    }
    public void run() {
        System.out.println("run》》》》》》");
    }
}
 扩展

除此之外,我们还可以通过实现InitializingBean接口,完成一些Bean初始化操作

package com.xfy.dao.Impl;

import com.xfy.dao.UserDao;
import org.springframework.beans.factory.InitializingBean;

public class UserDaoImpl implements UserDao,InitializingBean{
    public UserDaoImpl() {
        System.out.println("UserDaoImpl无参方法执行");
    }

    public  void  init(){
        System.out.println("初始化完成");
    }
    public  void destroy(){
        System.out.println("快销毁了");
    }
    public void run() {
        System.out.println("run》》》》》》");
    }
//在属性设置之后
    public void afterPropertiesSet() throws Exception {
        System.out.println("afterPropertiesSet.....");
    }
}
 Bean的实例化
    <bean  id="userDao" name="dao" class="com.xfy.dao.Impl.UserDaoImpl" lazy-init="true" >
<!--        构造参数-->
        <constructor-arg name="name" value="xfy"></constructor-arg>
    </bean>

//有参构造方法
   public UserDaoImpl(String name) {
        System.out.println("UserDaoImpl无参方法执行");
    }

//默认为无参构造方法

 工厂方法实例化:底层通过调用自定义的工厂方法对Bean进行实例化

  • 静态工厂方法实例化Bean

<bean id="userDao1" class="com.xfy.factory.MyBeanFactory1" factory-method="userDao"></bean>

package com.xfy.factory;

import com.xfy.dao.Impl.UserDaoImpl;
import com.xfy.dao.UserDao;

public class MyBeanFactory1 {
    public static UserDao userDao(){
//        Bean创建之前可以进行一些其它操作
        return  new UserDaoImpl();
    }
}

  
有参:
       <bean id="userDao1" class="com.xfy.factory.MyBeanFactory1" factory-method="userDao">
          <constructor-arg name="name" value="xfy"></constructor-arg>
      </bean>

 实例工厂方法实例化Bean

package com.xfy.factory;

import com.xfy.dao.Impl.UserDaoImpl;
import com.xfy.dao.UserDao;
//实例化工厂方法
//与静态工厂方法不同的是实例化工厂调用方法的前提是要有一个实例化的对象,调用非静态方法
public class MyBeanFactory2 {
    public  UserDao userDao(){
//        Bean创建之前可以进行一些其它操作
        return  new UserDaoImpl();
    }
}

<!--    实例化一个对象-->
    <bean class="com.xfy.factory.MyBeanFactory2" id="beanFactory2"></bean>
<!--    实现实例化工厂-->
    <bean id="userDao2" factory-bean="beanFactory2" factory-method="userDao"></bean>


http://www.kler.cn/a/135790.html

相关文章:

  • C语言-结构体内存大小
  • 领克Z20结合AI技术,革新自动驾驶辅助系统
  • Linux的启动流程
  • 什么样的LabVIEW控制算自动控制?
  • Linux挖矿程序排查
  • 某科技局国产服务器PVE虚拟化技术文档
  • UnitTest框架
  • 图像处理01 小波变换
  • uni-app开发微信小程序 vue3写法添加pinia
  • 云桌面 node_modules 切换艰辛历程记录 rebuild失败记录
  • Positive Technologies 利用 PT Cloud Application Firewall 保护中小型企业的网络资源
  • (八)、基于 LangChain 实现大模型应用程序开发 | 基于知识库的个性化问答 (检索 Retrieval)
  • 实用篇-ES-RestClient查询文档
  • 使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床
  • 拼图游游戏代码
  • Vatee万腾携手Wiki EXPO 2023悉尼峰会 共谱辉煌未来
  • Java code auditing
  • 力扣刷题-二叉树-完全二叉树的节点个数
  • Go 语言中的map和内存泄漏
  • 【GitLab】-HTTP 500 curl 22 The requested URL returned error: 500~SSH解决
  • 界面组件DevExpress Reporting v23.1亮点 - 全新升级报表查看器
  • 立哥先进技术-常用渗透测试工具
  • Workplace Search 的演变:使用 Elasticsearch 搜索你的私人数据
  • 细说MySQL数据类型
  • 安装R和Rstudio
  • 庖丁解牛:NIO核心概念与机制详解 06 _ 连网和异步 I/O