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第一大国 ...
一周排行
  • Xcode6中有一个十分方便的功能,就是导入的图片资源支持矢量图格式.这对于开发者来说无疑是个天大的好消息.不过,这矢量图怎么搞?有什么好处?效果到底如何?不妨打开 Xcode6 来一发试试看,亲自体验一下矢量图的魅 ...
  • openstack外篇之认识mysql授权及一些操作  http://www.aboutyun.com/thread-1-1.html
  • 数据库分页的两种方法对比(row_number()over()和top的对比)    今天,老师带偶们复习了一下数据库中的分页,总体来说,今天感觉还不错,因为以前学的还没忘..-_-  www.2cto.com   ...
  • 洪偌馨2014年的淘宝"双11",由于保单生成速度太快.数据量太大,以至于当时已经无法看到同步更新资金变化.这让众安保险的CEO陈劲想到了电影"超体"(LUCY)里的一句话:当 ...
  • 9.5 25 1000pass will7 早上1000pass的,新题应该是不算分.要不也不会1000分.考的是pppoe的试验. 下面是我复习考试的题库和收集的战报. 谢谢以前提供战报的XDJM. [l ...
  • yield,可以使线程放手一下CPU.然后再抓!放一下手,就可以让后面的线程先上了CPU. 例子: public class TestYield { public static void main(String[] ...
  • 1.创建一个Django Project#使用下面的命令可以创建一个project [email protected]~: django-admin.py startproject mysite#创建好之后可以看到如下的 ...
  • 在实际的应用开发中,会用到传感器,下面首先介绍一下iphone4的传感器,然后对一些传感器的开发的API作一简单介绍 一. iPhone 4的传感器技术       进入正题,iPhone 4到底用上了哪些传感器呢? ...
  • 由于下午学习时感到有点累了,就随便进几个学姐和学长的博客转转,结构发现了一个还挺巧妙的智力题,于是就打算自己记录下来. 题目:你有一条金条,你雇佣一个员工干7天的活,这个金条你只能切2刀,但是你每天都要发给员工一份. ...
  • http://www.it165.net/pro/html/201408/21066.html