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第一大国 ...
一周排行
  • 易网科技讯 9月11日消息,据国外媒体报道,日本移动运营商决定销售最新推出的iPhone 5c,可能让本已陷入困境的日本手机制造商的命运最终画上句号,因为这将让他们的价格优势消失殆尽.iPhone 5c是一款相对较为 ...
  • 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功 让系分来得更猛烈些吧 不值钱的系统分 ...
  • 看到这个标题大家一定会想到这篇神文<How Browsers Work>,这篇文章把浏览器的很多细节讲得很细,而且也被翻译成了中文.为什么我还想写一篇呢?因为两个原因, 所以,我准备写下这篇文章来解决上述 ...
  • @@@第三天第二段 @@stat命令:查看文件的元数据信心!Inode stat FILE... bash文本编辑器编辑器:进行文本内容修改的程序 行编辑器:sed 全屏编辑器:nano, vi, vim @@nan ...
  •  作者:成松林来源:安全焦点QQ:179641795Email:[email protected]:欢迎大家转载,请大家转载注明原出处和作者信息.发篇文章不容易..大家请保留作者信息. .586p ;##### ...
  • // // main.m // 电子菜单 // #import <Foundation/Foundation.h> #import "Food.h" #import "Coo ...
  • oracle学习restore database和recover database   restore 只是用备份来还原,recover是用archivelog或者online log   举例说明: 假设我时间点A ...
  •   锁一个SQL表的语句是SQL数据库使用者都需要知道的,下面就将为您介绍锁SQL表的语句,希望对您学习锁SQL表方面能有所帮助.   锁定数据库的一个表  www.2cto.com   SELECT * FROM ...
  • 文/顾的iDea上次写了一篇关于公关和媒介的吐槽,有一小撮公关的同学很不满意,说你们丫记者了不起啊,你造我有多努力吗!于是今天写写记者.昨天极客公园的"奇点"大会现场央视<对话>栏目主 ...
  • 版权声明 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有.欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且必须包含此版权声明 ...