spring学习(49):javaconfig里面定义bean的作用域

目录结构

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.geyao</groupId><artifactId>spring01geyao</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>3.2.0.RELEASE</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.4.RELEASE</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.4.RELEASE</version><scope>test</scope></dependency></dependencies>
</project>

log4j.properties

### 设置###
log4j.rootLogger = ERROR,stdout### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.category.org.springframework.beans.factory=ERROR

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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--bean元素:描述当前的对象需要由spring容器管理id属性:标识对象 未来在应用程序中可以根据id获取对象class对象:被管理的对象的全名--><context:component-scan base-package="com.geyao.demo"></context:component-scan><bean id="notepad" class="com.geyao.demo.NotePad" scope="singleton"/>
</beans>

notepad类

package com.geyao.demo;public class NotePad {public NotePad() {super();System.out.println("NotePad的构造函数"+this.toString());}
}

notepad2类

package com.geyao.demo;import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;@Component
//@Scope("prototype")
//@Scope(scopeName = "prototype")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Notepad2 {public Notepad2() {super();System.out.println("NotePad的构造函数"+this.toString());}}

notepad3类

package com.geyao.demo;import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;public class Notepad3 {public Notepad3() {super();System.out.println("NotePad的构造函数"+this.toString());}}

Appconfig类

package com.geyao.demo;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;@Configuration
public class Appconfig {@Bean@Scopepublic Notepad3 notepad3(){return new Notepad3();}
}

Notepadtest类

package com.geyao.demo;import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
//无论我们是否去主动获取对象,spring上下文刚加载就会创建对象
//无论获取多少次,都是统一对象
//
public class NotepadTest {@Testpublic void test01(){ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");NotePad notePad1= (NotePad)context.getBean("notepad");NotePad notePad2= (NotePad)context.getBean("notepad");System.out.println(notePad1=notePad2);}
}

notepadtestAuto类

package com.geyao.demo;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class NotePadTestAuto {@Autowiredprivate NotePad notePad1;@Autowiredprivate NotePad notePad2;@Testpublic void test01(){System.out.println(notePad1==notePad2);}
}

notepadtestt类

package com.geyao.demo;import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;@Component
//@Scope("prototype")
//@Scope(scopeName = "prototype")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Notepad2 {public Notepad2() {super();System.out.println("NotePad的构造函数"+this.toString());}}

notepad3test类

package com.geyao.demo;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=Appconfig.class)
public class Notepad3Test {@Autowiredprivate Notepad3 notePad1;@Autowiredprivate Notepad3 notePad2;@Testpublic void test01(){System.out.println(notePad1==notePad2);}
}

运行结果

NotePad的构造函数com.geyao.demo.NotePad@117159c0
NotePad的构造函数com.geyao.demo.Notepad2@3cce5371
NotePad的构造函数com.geyao.demo.Notepad2@480d3575
false

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

675. Cut Off Trees for Golf Event

这道题目最大的难点是理解题意。 文章目录题目理解题目理解 输入&#xff1a;一个非负的二维数组 输出&#xff1a;一个最短距离 规则&#xff1a;数组中的元素如果是0&#xff0c;表示障碍&#xff0c;不能通过。如果是1&#xff0c;表示可以行走的地面。如果大于1表示树的高…

spring学习(50):延迟加载

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

ansible的错误

错误 [rootbogon ansible]# ansible test -m ping 192.168.16.155 | FAILED! > { "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this hosts finger…

spring学习(51):对象的初始化和销毁

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

282. Expression Add Operators

目录题目理解分析第一步&#xff1a;dfs获得所有表达式第二步&#xff1a;计算结果先计算加减法计算乘法时间复杂度进一步优化题目理解 输入&#xff1a;一个字符串num&#xff0c;一个int target。输入num只包含数字。 规则&#xff1a;可以给num中包含的数字之间任务添加二目…

ubuntu下的对拍

开始用ubuntu祭blog 转载于:https://www.cnblogs.com/123789456ye/p/11094192.html

spring学习(52):工厂方法创建bean对象

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

花花酱leetcode 题目——搜索专题

在刷完极客时间的算法题目之后&#xff0c;偶然看到了花花酱关于leetcode进入千题时代的一些刷题看法。决定跟着他的思路继续刷题。 要刷多少题 1 每个类型 10-20 如何刷题 1 同类型题目一起刷 2 看代码很重要&#xff0c;看至少3-5种不同实现 3 第一遍&#xff1a;5分钟想…

P2058 海港

P2058 海港 题解 这道题就是给出你n艘船&#xff0c;让你看看以当前船停靠时间为截止时间&#xff0c;24h以内乘客来自多少不同的国家 一开始会想到来一艘船就记录下本船的到达时间&#xff0c;到达人数&#xff0c;以及乘客的国籍 但是你会发现这很占空间 而且船只进来的顺序都…

spring mvc学习(1):spring jar包

spring.jar是包含有完整发布的单个jar 包&#xff0c;spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容&#xff0c;因为只有在开发环境下才会用到 spring-mock.jar来进行辅助测试&#xff0c;正式应用系统中是用不得这些类的。 除了spring.jar文件&a…

花花酱leetcode 题目-二分搜索

原链接 IDNamedifficultysimilar Problemscomments35Search Insert Position234 94 781upper_bound33Search in Rotated Sorted Array381 153 154 162rotated/peak69Sqrt(x)

com.alibaba.fastjson.JSONObject cannot be cast to XXX异常解决

项目开发中遇到过几次这个问题&#xff0c;所以记录一下&#xff0c;代码如下&#xff1a; 1 PostMapping("/save-files") 2 public void addFiles(RequestBody List<AddFileRecordRequestDto> fileRecords) 3 { 4 LoginInfo loginInfosession…

spring mvc学习(2):spring jar包下载

jstl的jar包的下载 我们在使用spring框架的时候导入jstl标签库需要使用到jstl的jar包&#xff0c;假如没有加入到eclipse的lib目录下&#xff0c;使用alt /的时候不会有提示&#xff0c;所以我们需要把这个jar包加进来 首先登陆网址&#xff1a;http://tomcat.apache.org/ta…

EF框架学习(5)---EF中的在线和离线场景

EF中的持久性场景 使用EF实现实体持久化&#xff08;保存&#xff09;到数据库有两种情况&#xff1a;在线场景和离线场景。 1.在线场景 在线场景中&#xff0c;context是同一个上下文实例&#xff08;从DbContext派生&#xff09;&#xff0c;检索和保存实体都通过同一个conte…

spring mvc学习(3):建立第一个动态web项目

intellij idea创建第一个动态web项目 我以2018版的intellij idea为例 一.创建JavaWeb 1.第一步 点击左上角的File-->New-->Project 2.第二步 1.找到Java Enterprise之后&#xff0c;在Application Sever中找到自己的Tomcat&#xff0c;同时勾选中Web Application 2.…

Git:(1)简介

Git是一个开源的分布式版本控制系统&#xff0c;分布式相比集中式的最大区别是Git没有“中央服务器”&#xff0c;每位开发者都可以通过克隆&#xff08;git clone&#xff09;远程库&#xff0c;在本地机器上存储一个完整的Git仓库&#xff0c;还可以把代码的修改提交到本地库…

(专题二)01 矩阵的处理-特殊矩阵

有哪些特殊矩阵&#xff1f; 通用的特殊矩阵 zeros函数 &#xff1a;产生全0矩阵 产生五行五列的随机矩阵A&#xff0c;其值是10--99的整数 产生均值0.6&#xff0c;方差0.1的五行五列正态矩阵B 产生五阶单位阵 验证等式成立 ones函数 &#xff1a;产生全1矩阵 eye函数 &…

Git(2):安装和使用

Git安装和使用 刚开始用git的小白适用&#xff0c;&#xff0c;转自http://www.cnblogs.com/qijunjun/p/7137207.html 实际项目开发中&#xff0c;我们经常会用一些版本控制器来托管自己的代码&#xff0c;今天就来总结下Git的相关用法&#xff0c;废话不多说&#xff0c;直接…

设计模式(二) 模板方法

模板方法模式——在一个抽象类中定义一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中去实现&#xff08;对应于我们根据自己的情况向模板填充内容&#xff09;。模板方法使得子类可以不改变一个算法的结构前提下&#xff0c;重新定义算法的某些特定步骤&#xff0c;…

33. Search in Rotated Sorted Array

文章目录题目二分解题81 Search in Rotated Sorted Array II题目 输入&#xff1a;一个按升序排序的数组nums&#xff0c;但是这个数组在某个位置被旋转了。(例如., 原始数组是[0,1,2,4,5,6,7]&#xff0c;旋转后就变成 [4,5,6,7,0,1,2])。第二个输入是一个int target。 输出&…