Spring 实例化bean的三种方式:

方法一:使用构造器实例化bean

java代码:

package com.model;

public class User {
    
    private String username;
    
    public User(){
        
    }
    
    public User(String username){
        this.setUsername(username);
    }
    
    public void sayHello(){
        System.out.println("hello ");
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

配置文件:

 <!--方法一:使用构造器实例化bean  -->
  <bean id="user" class="com.model.User"></bean>

测试代码:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
        //方法一:使用构造器实例化bean
        User user = (User)applicationContext.getBean("user");
        user.sayHello();

方法二:使用静态工厂方法实例化bean
java代码:

package com.test;

public class StaticFactory {

    private static StaticFactory staticFactory  = new StaticFactory();
    public static StaticFactory getBean() {
        return staticFactory;
    }
    
    public void say() {
        System.out.println("new Instance!");
    }
}

配置文件:

<!--方法二:使用静态工厂方法实例化bean  -->
  <bean id="staticFactory" class="com.test.StaticFactory" factory-method="getBean"/>

测试代码:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
        
        //方法二:使用静态工厂方法实例化bean
        StaticFactory staticFactory = (StaticFactory)applicationContext.getBean("staticFactory");
        staticFactory.say();

方法三:使用实例工厂方法实例化bean

java代码:

package com.test;

import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;

public class InstanceBean {
    private static UserDao userDaoA = new UserDaoImpl();
    
    //该方法必须是非静态的
    public UserDao getBeanInstance() {
        return userDaoA;
    }
    
}
接口UserDao:
package com.dao;

import com.model.User;

public interface UserDao {
    public void add(User user);
    public void findByid(String id);
}


实现类UserDaoImpl:
package com.dao.impl;

import com.dao.UserDao;
import com.model.User;

public class UserDaoImpl implements UserDao {
    
    private String hello;
    @Override
    public void add(User user) {
        System.out.println("方法三:qwqwqwq!!!");
    }

    @Override
    public void findByid(String id) {
        
    }

    public String getHello() {
        return hello;
    }

    public void setHello(String hello) {
        this.hello = hello;
    }

}

 

配置文件:

<!--方法三:使用实例工厂方法实例化bean  -->
  <bean id="instanceBean" class="com.test.InstanceBean"/>
  <bean id="userDaoA" factory-bean="instanceBean" factory-method="getBeanInstance"></bean>

测试代码:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
        //方法三:使用实例工厂方法实例化bean
        UserDao userDao = (UserDao)applicationContext.getBean("userDao");
        String username = "pppp";
        userDao.add(new User(username));

 

 

 

 

 

 

 

更多相关文章
  • http://www.lanyingwang.com/friends-s01-s10-1994-2004-720p1080p-bluray-x264-publichd.html http://xidong.net/File001/File_21346.html http://xidong.net/F ...
  • 随着2.6内核对epoll的完全支持,网络上很多的文章和示例代码都提供了这样一个信息:使用epoll代替传统的poll能给网络服务应用带来性能上的提升.但大多文章里关于性能提升的原因解释的较少,这里我将试分析一下内核(2.6.21.1)代码中poll与epoll的工作原理,然后再通过一些测试数据来对 ...
  •  目录: 一.前言 二.使用普通用户 三.自动启动PDB   一.前言 最近电脑上安装了oracle 12c数据库,想体验下新特性.安装完后,便像11g一样在dos窗口进行下面的操作: SQL*Plus: Release 12.1.0.2.0 Production on 星期日 8月 9 13:06 ...
  • 环境问题 Linux(centos6.6): Linux xiao-wei 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux Nginx: nginx versi ...
  • 北京商报讯(记者 崇晓萌)上市一周年后,聚美优品宣布任命任泉和苏芒为独立董事,巩固其"时尚潮流电商"的定位.资料显示,任泉为演员.Star VC风险投资公司创始人,该公司成立于2014年7月,创始人除任泉外还有黄晓明和李冰冰.苏芒为时尚集团总裁,该集团为中国大型时尚杂志出版商,旗 ...
  • 韩国:公交地铁看直播4G堪比电视台黄远 王心馨"Hi,Yolanda!你可以使用kakaotalk或者LINE打视频电话吗?"12月9日下午,韩国"土著"美女丁在嬉(音译),一边在公园散步一边"抗议"我的电话采访.作为全球公认的4G第一大国 ...
一周排行
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如 ...
  • 易网科技讯  9月29日消息,据路透社报道,周三Groupon针对美国用户推出了网上零售服务Groupon Goods,以将业务扩大至团购以外领域,与亚马逊等公司竞争.当日这家领先的团购网站向精选的客户发送电子邮件客 ...
  • 由于论文原因,这里构建一个低版本的xen虚拟,注意版本对安装的影响 一. 安装ubuntu10.04 国内唯一可以源: deb http://mirrors.163.com/ubuntu/ lucid mainuni ...
  • JavaScript获取路径 1.设计源码 JavaScript获取路径 <script type="text/javascript"> function findPath() { / ...
  • Torsten在一次讨论中问到,“你能在星巴克员工准备一杯玛奇雅朵咖啡的时间里让玩家获得满意的体验吗?“ 对于移动游戏(手机或平板)的设计来说,这一点至关重要.当然,如果你的免费游戏是针对网页浏览器,PC或主机平台的 ...
  • 亚马逊的首席技术官沃纳·威格尔说:开源软件和当前可用的可扩展云技术支撑着科技初创公司的创新. 然而,今天在伦敦“金融时报”创新会议中作此评论的威格尔,还表示云是一次商业模式的革命,而非技术本身. “云并非一次技术革命 ...
  • 基于HBase0.94版本,在高并发写操作时,运行时偶尔出现丢失数据的情况,查看了HBase的日志,出现一下信息,WARN org.apache.hadoop.hbase.regionserver.MemStore: ...
  • 作者:Richard Pal         来自:perftesting           翻译:Elaine00 通过这篇文章,我将介绍如何通过HP Loadrunner VuGen来测试一个安卓应用的网络流量 ...
  • 去年10月份,微软发布了Windows 10技术预览版.伴随着Windows 10的发布,微软还很可能以 Webkit 为内核推出一款代号为 "Spartan" 的全新浏览器,并且该浏览器将登陆W ...
  • 丰富的数据结构使得redis的设计非常的有趣.不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与.redis的DBA需要熟悉数据结构,并能了 ...