Spring()

一、导学

二、

1.入门程序

spring快照版本是最新的版本,未发布。需要用到<repository></>

下面这个不需要配置仓库,直接写在依赖中就行

引入spring相关依赖

<?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.grin</groupId><artifactId>spring-002-first</artifactId><version>1.0-SNAPSHOT</version><!-- 打包方式  --><packaging>jar</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.10</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
</project>

疑惑:

1.类加载路径

类路径classpath指的是编译后路径即:
本项目[或模块目录]/target/[项目或模块名]/WEB-INF/classes

原项目中java目录下的文件和recource目录下的文件页都被打包到了此类路径下。

如下图: java目录中的文件和recource目录中的文件经过编译后,都会放到WEB-INF/classes目录下:

把test写成private后,外界调用不了这个测试方法。

一个小细节:发现构造方法,不是在getBean()时创建的。

证明如下:

2.spring6启用log4j2框架

上去就报错了 

Cannot reconnect

第一步:引入依赖

<!--log4j2的依赖--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.19.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j2-impl</artifactId><version>2.19.0</version></dependency>

第二步:在类的根路径下提供log4j2.xml配置文件(文件名固定为:log4j2.xml,文件必须放到类根路径下。)

<?xml version="1.0" encoding="UTF-8"?><configuration><loggers><!--level指定日志级别,从低到高的优先级:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF--><root level="DEBUG"><appender-ref ref="spring6log"/></root></loggers><appenders><!--输出日志信息到控制台--><console name="spring6log" target="SYSTEM_OUT"><!--控制日志输出的格式--><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/></console></appenders></configuration>

第三步:使用日志框架

Logger logger = LoggerFactory.getLogger(FirstSpringTest.class);
logger.info("我是一条日志消息");

在配置文件中,已经指定了 debug日志级别, 很有意思。当打印日志时,如果低于这个级别,则不会打印出来。

除此之外,你可以在配置文件中去指定这个级别。

三、 spring对loc(控制反转) 的实现

1.set注入。

配合property标签,

注意 name是 本类的set方法的名字:去掉set,首字母小写

ref 是所要引用 的其他类。

总之,通过 本类的set方法对所引用的类进行注入。

2.构造注入

利用 <constructor-arg  name=""  ref=" ">  ,  name属性可被 索引,类型推断 替代。 

3.内部bean和外部

没有那么复杂,声明在外面的bean叫做 外部bean,有自己的 id 和class .

                        而内部bean写在<property>中,不需要class

4.给简单类型注入

疑惑:为什么要给它注入。

下面是spring中认为的基本数据类型,不使用ref来引用,而是通过name属性。

但要注意 Date类型的注入,要满足它所要求的格式。

在实际开发中,不会用Date这种注入方式,应该有更好的。

经典:

注入空字符串

注入的值含有 特殊符号

第二种方案,只能用<value></value>标签

p命名空间

c命名空间

schemaLocation

下面这两个 自动装配 是基于set方法 的        

根据名字自动装配

根据类型自动装配        

根据类型进行自动装配时,在有效的配置文件当中,某种类型的实例只能有一个

引入外部属性,context命名空间

当加载时,会默认先加载windows中的环境变量,因此要在properties文件中的key前 加上 jdbc前缀

四、bean作用域

参考资料:

【文字+图示】Java项目中类路径classpath具体指的是哪个路径_超周到的程序员的博客-CSDN博客

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

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

相关文章

(Python) Python中三种时间格式的转换方法

1. 时间元组 1.1. 时间元组和时间戳的互相转化 import time,datetime # 获取当前时间的时间元组 t time.localtime() print(t) # 时间元组转时间戳 timestamp time.mktime(t) print(timestamp) # time.struct_time(tm_year2019, tm_mon10, tm_mday23, tm_hour23, tm_min15,…

中国移动集采120万部,助推国产5G赶超iPhone15

近期媒体纷纷传出消息指中国移动将大规模集采&#xff0c;预计将采购国产5G手机120万台&#xff0c;加上另外两家运营商的集采数量&#xff0c;估计集采数量可能达到300万部&#xff0c;如此将有助于它在国内高端手机市场赶超苹果。 国产5G手机在8月底突然上市&#xff0c;获益…

python+pytest接口自动化 —— 参数关联

什么是参数关联&#xff1f; 参数关联&#xff0c;也叫接口关联&#xff0c;即接口之间存在参数的联系或依赖。在完成某一功能业务时&#xff0c;有时需要按顺序请求多个接口&#xff0c;此时在某些接口之间可能会存在关联关系。 比如&#xff1a;B接口的某个或某些请求参数是…

攻防演练蓝队|Windows应急响应入侵排查

文章目录 日志分析web日志windows系统日志 文件排查进程排查新增、隐藏账号排查启动项/服务/计划任务排查工具 日志分析 web日志 dirpro扫描目录&#xff0c;sqlmap扫描dvwa Python dirpro -u http://192.168.52.129 -b sqlmap -u "http://192.168.52.129/dvwa/vulnera…

了解容器运行时安全:保护你的容器应用

前言 容器是一种虚拟化技术&#xff0c;用于封装和运行应用程序及其依赖项&#xff0c;以便在不同的计算环境中保持一致性和可移植性。自2013年容器诞生至今&#xff0c;容器Docker镜像的下载量超20亿&#xff0c;虽然容器行业发展如火如荼&#xff0c;但是其安全风险却不容乐…

input的一些输入限制

1、input输入框只能输入正整数和0 <el-input v-model"value"onkeyup"value(value.replace(/\D/g,)?:parseInt(value))"placeholder"请输入设备数量" /> 1-1、只能输入大于0的正整数 valuevalue.replace(/^0|[^0-9]/g, ) 2、input输入…

Tips linux如何获取当前连接的ssh用户信息

linux ubuntu debian如何获取当前连接的ssh用户信息 这里需要用到一个常用的网络工具netstat&#xff0c;如果没有这个软件可以通过下边的命令安装&#xff1a; sudo apt-get install net-tools安装完成后通过下边的指令获取ssh所有连接用户&#xff1a; netstat -al|grep s…

EKP接口开发Webservice服务和Restservice服务以及定时任务Demo

继承com.landray.kmss.sys.webservice2.interfaces.ISysWebservice&#xff0c;同时在接口上使用WebService注解将其标识为WebService接口 package com.landray.kmss.third.notify.webservice;import com.alibaba.fastjson.JSONObject; import com.landray.kmss.sys.webservic…

杭电oj--计算两点间的距离

Problem Description 输入两点坐标&#xff08;X1,Y1&#xff09;,&#xff08;X2,Y2&#xff09;,计算并输出两点间的距离。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;由4个实数组成&#xff0c;分别表示x1,y1,x2,y2,数据之间用空格隔开。 Output 对于每组输…

自动存储、静态存储和动态存储

目录 1.自动存储 2.静态存储 3.动态存储&#xff08;自由存储空间free store或堆heap&#xff09; 4.线程存储&#xff08;C11新增&#xff09; 根据用于分配内存的方法&#xff0c;C有3种管理数据内存的方式&#xff1a; 1.自动存储 在函数内部定义的常规变量使用自动存…

Golang 结构化日志包 log/slog 详解(六):slog.Record

上一篇文章讲解了 log/slog 包中的 LogValuer 和日志记录函数的正确包装方法&#xff0c;本文详细讲解一下 slog.Record 结构体的使用方法和需要注意的点。 slog.Record Record 类型用来保存日志事件的信息&#xff0c;定义如下&#xff1a; type Record struct {Time time.…

【Yarn】清除Yarn的缓存,更新Yarn本身、更新项目的依赖项

要清除Yarn的缓存&#xff0c;可以运行以下命令&#xff1a; yarn cache clean这将清除Yarn的缓存目录。 要更新Yarn本身&#xff0c;可以运行以下命令&#xff1a; yarn self-update这将下载并安装最新版本的Yarn。 如果要更新项目的依赖项&#xff0c;可以运行以下命令&a…

学习开发一个RISC-V上的操作系统(汪辰老师) — 一次RV32I加法指令的反汇编

前言 &#xff08;1&#xff09;此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。 &#xff08;2&#xff09;该课程相关代码gitee链接&#xff1b; &#xff08;3&#xff09;PLCT实验室实习生长期招聘&#xff1a;招聘信息链接 前置知识 RISC-V 汇编指令编码格式 &a…

利用服务器打造创新的在线社区

在这个数字化时代&#xff0c;服务器是实现创意项目的关键工具之一。虽然有许多用途&#xff0c;但其中最引人注目的是将服务器用于构建创新的在线社区。 为什么选择在线社区&#xff1f; 在线社区是连接人们、促进互动和分享知识的强大工具。它们可以围绕共同的兴趣、目标或…

AFL安全漏洞挖掘

安全之安全(security)博客目录导读 ATF(TF-A)/OPTEE之FUZZ安全漏洞挖掘汇总 目录 一、AFL简介 二、AFL的安装 三、代码示例及种子语料库 四、AFL插桩编译 五、AFL运行及测试 六、AFL结果分析 一、AFL简介 模糊测试&#xff08;Fuzzing&#xff09;技术作为漏洞挖掘最有…

【算法 | 模拟No.2】leetcode495. 提莫攻击

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【Leetcode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

软设上午题错题知识点3

软设上午题错题知识点3 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务是原子的&#xff0c;要么做&#xff0c;要么都不做。一致性&#xff08;Consistency&#xff09;&#xff1a;事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。隔离性隔离…

Go项目踩坑:go get下载超时,goFrame框架下的go项目里将vue项目的dist同步打包发布,go项目打包并压缩

Go项目踩坑&#xff1a;go get下载超时&#xff0c;goFrame框架下的go项目里将vue项目的dist同步打包发布&#xff0c;go项目打包并压缩 go get下载超时goFrame打包静态资源vue项目打包gf pack生成go文件 静态资源使用打包发布go项目交叉编译&#xff0c;省略一些不必要的信息通…

简述常见HTTP状态码分类?

有时候我们在访问一些网站的时候会经常看到一些网站有报错情况,同时在浏览器中会显示某些错误代码,很多人并不清楚这些错误代码代表的是什么意思。今天收集整理一下目前浏览器中常见的HTTP状态码以备查阅了解。 HTTP状态码概念 当浏览者访问一个网页时,浏览者的浏览器会向网…