1.无参构造方法实例化(详见我的博客)
2.工厂静态方法实例化
创建StaticFactory类

public class StaticFactory {public static UserDao getUserDao(){return new UserDaoImpl();}
}

UserDaoImpl类

public class UserDaoImpl implements UserDao {public UserDaoImpl(){System.out.println("UserDaoImpl被创建了");}@Overridepublic void save() {System.out.println("save running...");}
}

配置applicationContext.xml文件
告诉spring使用什么实例化

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--    <bean id="userDao" class="com.hao.dao.impl.UserDaoImpl" ></bean>--><bean id="userDao" class="com.hao.factory.StaticFactory" factory-method="getUserDao"></bean>
</beans>

其中的class是静态类的全限定类名,factory-method是静态类中的方法名,因为该类是静态的,所以不需要创建该类对象,直接调用即可
然后测试

public class SpringTest {@Test//测试scope属性public void test1(){ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao1 = (UserDao) app.getBean("userDao");System.out.println(userDao1);}
}


3.工厂实例方法实例化
创建工厂类DynamicFactory

public class DynamicFactory {public UserDao getUserDao(){return new UserDaoImpl();}
}

application的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--    让spring先创建factory工厂对象--><bean id="factory" class="com.hao.factory.DynamicFactory"></bean>
<!--    配置userDao的唯一标识id,factory-bean表示我要找这个factory工厂,然后找到找到getUserDao方法--><bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>
</beans>

Spring配置文件-Bean实例化的三种方式相关推荐

  1. Spring中bean实例化的三种方式:默认构造、静态工厂、实例工厂

    1. 默认构造方式:必须提供默认构造 <bean id="bean id" class="工厂全限定类名"></bean> 以Studn ...

  2. Bean实例化的三种方式

    一.实例化的三种方式 1.使用无参构造方法实例化(最常用) xml配置 <bean id="userDao" class="dao.impl.UserDaoImpl ...

  3. java 循环依赖_浅谈Spring解决循环依赖的三种方式

    引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错.下面说一下Spring是如果解决循环依赖的. 第一种: ...

  4. Spring注解依赖注入的三种方式的优缺点以及优先选择

    当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 代码示例: Con ...

  5. Spring自动装配@Autowired的三种方式

    转自:https://ahaochan.github.io/Java/JavaWeb/Spring/Spring%E8%87%AA%E5%8A%A8%E8%A3%85%E9%85%8D@Autowir ...

  6. 【我是初学者】关于获取配置文件.properties的常见三种方式--只是常见的方式,欢迎牛神来加瓦

    首先所谓的获取,肯定跟位置有一定的关系,智商在80的人应该都能理解,那我们的配置文件在项目结构中的三个基本的常见位置是: 因为配置文件通常都是用map键值对来实现的一种方式,所以要拿到根据键去拿到配置 ...

  7. spring boot 开启定时任务的三种方式

    序言 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer) 前者相信大家都很熟悉, ...

  8. spring创建复杂对象的三种方式

    什么是复杂对象? 复杂对象是指我们通过new创建不了的对象,此对象的创建还需要别的条件,如jdbc的Connection.mybatis的sqlSesscionFactory. 一.factoryBe ...

  9. @Import-给容器中加载bean的第三种方式

    给容器中注册组件: 1)包扫描+组件标注注解(@Controller/@Service/@Repository/@Component) 2)@Bean[导入的第三方包里面的组件] 3)@Import[ ...

最新文章

  1. (原創) 标准的makefile写法 (C/C++)
  2. python解析并读取PDF文件:函数总结
  3. Linux搭建私有Git服务器以及ssh免密登陆配置
  4. Hashtable 和 HashMap 的区别
  5. Ubuntu在docker容器中安装TensorFlow-1.5
  6. Hbuilder如何创建并运行Vue项目
  7. 安卓使用html文件遍历,安卓手机中使用html的input file,获取不到文件类型和文件名...
  8. 什么叫共轭先验或者共轭分布?
  9. 这九年来都在干嘛-兄弟连IT教育
  10. 全面|机房精密空调设计,看完你就明白了
  11. 苹果CMS采集方法支持文章资源采集
  12. 统计通话次数和时间的软件_通话时间统计app下载
  13. android水印的添加,Android添加水印的正确方法 只要三步!
  14. 华为USG防火墙恢复密码步骤
  15. 橙色军团的“3E”宣言
  16. triggered传递参数
  17. win10 .Net Runtime Optimization Service占用大量CPU资源解决方法
  18. 多维数组扁平化的方法
  19. 艺术类职称计算机考试,2017年职称计算机考试Word2003巩固练习题20
  20. 如何从twitter上爬取数据?

热门文章

  1. 锁分区提升并发,以及锁等待实例
  2. J2EE Architecture(4)
  3. controller需要捕获异常吗_Spring之Controller异常处理
  4. ant构建项目迁移到gradle_自动化构建、自动化部署发布一览
  5. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...
  6. php 精品课程,php51精品课程高级版
  7. python库怎么绘画_python基础,安装并使用matplotlib库画图
  8. 甘肃省计算机等级考试在线支付,甘肃计算机等级考试入口
  9. android java服务端_Android/Java从服务器端下载图片
  10. python事件循环_简单了解一下事件循环(Event Loop)