zoukankan      html  css  js  c++  java
  • Java第三十八天,Spring框架系列,Bean详解

    一、Bean对象创建的三种方式

    1.使用默认构造函数创建,即使用<bean></bean>标签

    <bean id="" class=""></bean>

    这种情况下如果Bean类不存在默认构造函数,则无法成功创建对象

    例如:

    package com.huhai.Service.Impl;
    
    import com.huhai.Dao.IAccountDao;
    import com.huhai.Service.IAccountService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    
    /**
     * 业务层实现类
     */
    public class AccountServiceImpl implements IAccountService {
    
        /*
        取消默认构造函数
         */
        public AccountServiceImpl(Object obj){
    
            System.out.println(obj);
        }
    
        public void save() {
    
            ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
            IAccountDao as = ac.getBean("accountDaoImpl", IAccountDao.class);
            as.save();
        }
    }
    

    2.使用工厂中的方法创建对象

    <bean id="工厂类ID" class="工厂类的全限定类名"></bean>
    <bean id="指定类ID" factory-bean="工厂类ID" factory-method="工厂类中返回指定类的方法"></bean>

    3.使用工厂中的静态方法创建对象

    <bean id="工厂ID" class="工厂类的全限定类名" factory-method="静态方法名"></bean>

    二、Bean的作用范围

    使用<bean></bean>标签的scope属性指定bean的作用范围

    • prototype ===> 多例模式
    • singleton ===> 单例模式(默认值)
    • request ===> 用于WEB应用的请求范围
    • session ===> 用于WEB应用的会话范围
    • global-session ===>用于集群环境的会话范围(全局会话范围),如果不是集群环境,自动转型为session模式
    <bean id="" class="" scope="singleton"></bean>

    三、Bean生命周期

    <bean id="" class="" scope="" init-method="对象初始化时想要调用的方法" destroy-method="对象销毁时想要调用的方法"></bean>
    

    单例对象:

    出生:当容器创建时对象出生

    活着:只要容器还在,对象一直活着

    死亡:容器销毁,对象消亡

    总结:单例对象的生命周期和容器相同

    多例对象:

    出生:当我们使用对象时spring框架为我们创建

    活着:对象只要是在使用过程中就一直活着

    死亡:当对象长时间不用,且没有别的对象引用时,由Java的垃圾回收器回收

    作者:蓝月

    -------------------------------------------

    个性签名:能我之人何其多,戒骄戒躁,脚踏实地地走好每一步

  • 相关阅读:
    hdu 2647 Reward
    hdu 2094 产生冠军
    hdu 3342 Legal or Not
    hdu 1285 确定比赛名次
    hdu 3006 The Number of set
    hdu 1429 胜利大逃亡(续)
    UVA 146 ID Codes
    UVA 131 The Psychic Poker Player
    洛谷 P2491消防 解题报告
    洛谷 P2587 [ZJOI2008]泡泡堂 解题报告
  • 原文地址:https://www.cnblogs.com/viplanyue/p/13573753.html
Copyright © 2011-2022 走看看