1.不使用Spring的实例:

01.Animal接口对应的代码:

package cn.pb.dao;/*** 动物接口*/
public interface Animal {//吃饭
    String eat();//睡觉void sleep();
}

02.Animal接口的实现类Dog对应的代码:

package cn.pb.dao.impl;
/*** animal的实现类*/import cn.pb.dao.Animal;public class Dog implements Animal{/*** 无参构造 验证什么时候实例被创建*/public Dog(){System.out.println("dog被实例化了!");}public String eat() {System.out.println("吃饭的方法");return null;}public void sleep() {System.out.println("睡觉的方法");}
}

03.测试的代码:

1  @Test
2     public  void  test01(){
3         //之前的一种方式    耦合的!
4         Animal animal=new Dog();
5         animal.eat();
6         animal.sleep();
7     }

2.使用spring解耦的方式 创建applicationContext.xml文件 放在src的根目录下

01.Animal接口对应的代码:

package cn.pb.dao;/*** 动物接口*/
public interface Animal {//吃饭
    String eat();//睡觉void sleep();
}

02.Animal接口的实现类Dog对应的代码:

package cn.pb.dao.impl;
/*** animal的实现类*/import cn.pb.dao.Animal;public class Dog implements Animal{/*** 无参构造 验证什么时候实例被创建*/public Dog(){System.out.println("dog被实例化了!");}public String eat() {System.out.println("吃饭的方法");return null;}public void sleep() {System.out.println("睡觉的方法");}}

03.applicationContext.xml配置文件:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--接收程序给我们的bean对象id就是我们的一个标识class是对应的实现类,class不能是接口
  lazy-init="true" 默认是false 按需加载,就是在getBean的时候才会创建实例
  -->
<bean id="dog" class="cn.pb.dao.impl.Dog" ></bean> </beans>

04.测试的代码:

001.applicationContext.xml放在项目的根路径下面

 @Testpublic void test02(){/** 使用spring  对象交给容器来创建 解耦* 01.引入jar* 02.创建容器applicationContext.xml* 03.加载spring的配置文件  创建容器   会把容器中所有的bean实例化* 04.然后从容器中取Bean*/ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");System.out.println("**************");//因为我们在容器中定义了ID  根据id找到对应的类Animal dog=(Dog)context.getBean("dog");dog.eat();dog.sleep();}

002.applicationContext.xml放在项目的根路径下面

 @Testpublic  void  test03(){/*** 默认applicationContext.xml放在项目的根路径下面* 也可以放在电脑指定的盘符下d:/applicationContext.xml* 使用new FileSystemXmlApplicationContext来创建对象*/ApplicationContext context=new FileSystemXmlApplicationContext("d:/applicationContext.xml");System.out.println("*************************");//因为我们在容器中定义了ID  根据id找到对应的类Animal dog=(Animal) context.getBean("dog");dog.eat();dog.sleep();}

003.使用BeanFactory来创建容器的时候,不会实例化容器中所有的Bean,

在getBean()才创建对应Bean的对象,按需加载。

 @Testpublic  void  test04(){/** 使用BeanFactory来创建容器的时候,不会实例化容器中的Bean* 在getBean()才创建对应Bean的对象*/BeanFactory context=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));System.out.println("*************************");//因为我们在容器中定义了ID  根据id找到对应的类Animal dog=(Animal) context.getBean("dog");dog.eat();dog.sleep();}

05.在spring的核心配置文件中 所有的bean默认都是单例模式:

001.applicationContext.xml配置文件代码:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--接收程序给我们的bean对象id就是我们的一个标识class是对应的实现类,class不能是接口--><!--配置我们的student对象   lazy-init="true" 默认是false 按需加载--><bean id="student" class="cn.pb.bean.Student" lazy-init="true"><property name="name" value="小黑"></property><property name="age" value="18"></property></bean> <!-- 在spring的核心配置文件中  所有的bean默认都是单例模式scope="singleton"  默认scope="prototype"  原型--><bean id="student2" class="cn.pb.bean.Student" scope="singleton"><property name="age" value="40"/><property name="name" value="小黑2"/></bean></beans>

002.验证代码:

/***  验证单例模式*  01.默认是单例  调用同一个对象 输出true*  02.之后再xml文件中的student2  增加属性scope="prototype"*  03.再次验证  两个对象肯定不一致 输出false*/@Testpublic   void  studentTest5(){ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");System.out.println("*******************************************");Student student = (Student) context.getBean("student2");System.out.println(student);Student  student2 = (Student) context.getBean("student2");  //再次获取System.out.println(student==student2);}

转载于:https://www.cnblogs.com/lyb0103/p/7611097.html

Spring笔记02(3种加载配置文件的方式)相关推荐

  1. VS-OpenCV三种加载图片的方式

    绝对路径和相对路径 #include<iostream> #include<opencv2/core.hpp>//核心接口 #include<opencv2/highgu ...

  2. Unity—AssetBundle的打包及四种加载资源方式

    AssetBundle打包:脚本放在Editor文件夹内 具体代码如下: using UnityEditor; using System.IO;public class CreateAssetBund ...

  3. TensorFlow加载数据的方式

    tensorflow作为符号编程框架,需要先构建数据流图,再读取数据,然后再进行训练.tensorflow提供了以下三种方式来加载数据: 预加载数据(preloaded data):在tensorfl ...

  4. spring加载配置文件

    在项目中有些参数经常需要修改,或者后期可能会有改动时,那我们最好把这些参数放到properties文件中,在源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...

  5. java加载配置文件_Java 读取配置文件的五种方式

    方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来. 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的clas ...

  6. java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  7. java动态加载配置文件

    最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...

  8. 区分Activity的四种加载模式(转)

    转自:http://marshal.easymorse.com/archives/2950 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activi ...

  9. spring-自动加载配置文件\使用属性文件注入

    在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...

最新文章

  1. pandas 里面对nan的判断
  2. Unity3D 学习教程 4 创建物体
  3. vim8支持的linux版本,Vim 8.0 版本安装方法及添加Python支持
  4. JS_ECMA基本语法中的几种封装的小函数
  5. 排序算法——直接插入排序
  6. 微分方程_微分方程 | 线性微分方程组的求解(上)
  7. restfull知识点
  8. 在Bootstrap框架中,form-control的效果
  9. 程序员,你的粮草何在?
  10. 哪些蔬菜基本不会使用农药?
  11. 零基础学python书籍-清华大学出版社-图书详情-《零基础入门学习Python》
  12. Adminers 1.0.7 正式发布,MySQL 管理客户端
  13. Ubuntu16.04安装teamver14.1.3
  14. Appium:ios自动化环境搭建
  15. 计算机 国际顶尖级会议排名,计算机学科国际会议排名
  16. 计算机教师成绩分析总结与反思,小学教师成绩分析总结与反思
  17. 360免费wifi的linux驱动下载,360随身wifi驱动
  18. Erlang并发编程(五) --- bigwig
  19. 他是对标芝麻信用和腾讯征信的“中外混血富二代”ZRobot CEO
  20. 全站最详细的Python numpy 搭建全连接神经网络模型教程(理论计算+代码实现)(不止能预测手写数字数据,准确率93.21%)

热门文章

  1. linux 复制指定类型,用Linux命令行实现删除和复制指定类型的文件
  2. lambda 根据属性去重_扩展lamda表达中distinct按照字段去除重复
  3. java 做猜数字小游戏_Java Properties类:利用Properties类制作猜数字小游戏
  4. java二分法查找_java 中二分法查找的应用实例
  5. 文件包含漏洞原理/利用方式/应对方案
  6. js数组的sort排序(获取中位数)
  7. 3650m5服务器内存选择 ibm_硬盘回收中心 服务器硬盘回收 监控硬盘回收
  8. (十)java版b2b2c社交电商spring cloud分布式微服务- SSO单点登录之OAuth2.0登录认证(1)...
  9. Apache的流处理技术概述
  10. 计划doing.....