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第一大国 ...
一周排行
  • 游标实例:             Declare MyCusror Cursor Scroll                   For Select * From Master_Goods Order By G ...
  • 昨日,记者从优酷获悉,优酷和土豆合并后,将成为集团公司,并对旗下品牌业务进行拆分重组.虽然距8月20日的优酷年度股东大会只剩下两周的时间,但在最终谜底揭晓之前,市场还是忍不住对于优土合并案的进展有诸多猜测.昨天,记者 ...
  • 啰嗦一下:本人所在公司从事碟式斯特林太阳能发电设备的研发与销售.单台设备图如下: 工作原理如下:整个设备大致可分为五个部分, 1.服务器,负责气象.发电等数据存取,电.网连接等处理: 2.气象站,通过光感应器实时获取 ...
  • Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).可以参考<Linux程序设计>(英文原版为<Beginning Linux P ...
  • #include <iostream> #include <stdlib.h>#include <windows.h>using namespace  std;class A{   ...
  • 无线网络故障问题我们需要各方面仔细排查,根据不同的现象,我们要做出一个大致的判断,缩小故障情况的范围.那么,笔者在此搜集了几类网友朋友们反映的问题,进行了一个答疑.希望大家觉得有所帮助. 无线网络故障问题1: 无线网 ...
  • 外交部发言洪磊7日主持例行记者会,就中俄印合作机制.中国军方黑客网络攻击等答记者问. 以下是外交部网站公布的答问实录: 洪磊首先发布消息: 应印度外长萨尔曼·库尔希德邀请,外交部长王毅将于11月10日至11日出席在印 ...
  • 数据结构中的内部排序:不需要访问外存便能完成,是一个逐步扩大记录的有序序列长度的过程. 可以分为5类: 1.插入排序:直接插入排序,稳定排序,时间复杂度为O(n^2)非递减有序,设置r[0]为哨兵进行n-1趟.    ...
  • 官网: https://select2.github.io/examples.html   引用: <link href="~/Scripts/select2/select2.css" re ...
  • 用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains='keywords').... 在这种情况下,如果你跟踪 sql 语句, ...