Spring笔记02(3种加载配置文件的方式)
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种加载配置文件的方式)相关推荐
- VS-OpenCV三种加载图片的方式
绝对路径和相对路径 #include<iostream> #include<opencv2/core.hpp>//核心接口 #include<opencv2/highgu ...
- Unity—AssetBundle的打包及四种加载资源方式
AssetBundle打包:脚本放在Editor文件夹内 具体代码如下: using UnityEditor; using System.IO;public class CreateAssetBund ...
- TensorFlow加载数据的方式
tensorflow作为符号编程框架,需要先构建数据流图,再读取数据,然后再进行训练.tensorflow提供了以下三种方式来加载数据: 预加载数据(preloaded data):在tensorfl ...
- spring加载配置文件
在项目中有些参数经常需要修改,或者后期可能会有改动时,那我们最好把这些参数放到properties文件中,在源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...
- java加载配置文件_Java 读取配置文件的五种方式
方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来. 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的clas ...
- java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- java动态加载配置文件
最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...
- 区分Activity的四种加载模式(转)
转自:http://marshal.easymorse.com/archives/2950 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activi ...
- spring-自动加载配置文件\使用属性文件注入
在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...
最新文章
- pandas 里面对nan的判断
- Unity3D 学习教程 4 创建物体
- vim8支持的linux版本,Vim 8.0 版本安装方法及添加Python支持
- JS_ECMA基本语法中的几种封装的小函数
- 排序算法——直接插入排序
- 微分方程_微分方程 | 线性微分方程组的求解(上)
- restfull知识点
- 在Bootstrap框架中,form-control的效果
- 程序员,你的粮草何在?
- 哪些蔬菜基本不会使用农药?
- 零基础学python书籍-清华大学出版社-图书详情-《零基础入门学习Python》
- Adminers 1.0.7 正式发布,MySQL 管理客户端
- Ubuntu16.04安装teamver14.1.3
- Appium:ios自动化环境搭建
- 计算机 国际顶尖级会议排名,计算机学科国际会议排名
- 计算机教师成绩分析总结与反思,小学教师成绩分析总结与反思
- 360免费wifi的linux驱动下载,360随身wifi驱动
- Erlang并发编程(五) --- bigwig
- 他是对标芝麻信用和腾讯征信的“中外混血富二代”ZRobot CEO
- 全站最详细的Python numpy 搭建全连接神经网络模型教程(理论计算+代码实现)(不止能预测手写数字数据,准确率93.21%)
热门文章
- linux 复制指定类型,用Linux命令行实现删除和复制指定类型的文件
- lambda 根据属性去重_扩展lamda表达中distinct按照字段去除重复
- java 做猜数字小游戏_Java Properties类:利用Properties类制作猜数字小游戏
- java二分法查找_java 中二分法查找的应用实例
- 文件包含漏洞原理/利用方式/应对方案
- js数组的sort排序(获取中位数)
- 3650m5服务器内存选择 ibm_硬盘回收中心 服务器硬盘回收 监控硬盘回收
- (十)java版b2b2c社交电商spring cloud分布式微服务- SSO单点登录之OAuth2.0登录认证(1)...
- Apache的流处理技术概述
- 计划doing.....