Spring学习笔记2 Spring的入门程序

2023-09-22 12:42:58

Spring学习笔记1 启示录_biubiubiu0706的博客-CSDN博客

Spring官网地址:https://spring.io

进入github往下拉
用maven引入spring-context依赖 写spring的第一个程序
引入下面依赖,好比引入Spring的基本依赖
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.10</version>
</dependency>

 

需要一个spring配置文件,idea提供了模板

名字随意

在Spring的配置文件中配置完

测试去Spring容器中取该对象

报错原因应该是Spring6  需要JDK版本17的原因

JDK改成17

默认情况下Spring会通过反射机制,调用类的无参数构造方法来实例化对象

如果下面这样Spring还能创建对象吗

底层是将id作为key 对象做为value存在一个Map中

另外Spring的配置文件可以有多个

另建个Spring配置文件

ClassPathXmlApplicationContext有个重载的构造方法,允许传入多个配置文件

还可以这样放置Spring配置文件,但注意  bean   id好比身份证号,必须唯一

这里报错原因是我原先在User类里加了有参构造

改回来

OK

配置文件里的bean可以是JDK里的bean

默认是单例的得到的对象是同一个

假设Spring配置文件在J盘,如何加载

ApplicationContext接口的超级父接口是BeanFactory,BeanFactory是IOC容器的顶级接口

SpringIOC容器底层实际上使用了工厂模式

并且也有getBean方法

SpringIOC如何实现的:XML解析+工厂模式+反射机制

那么在创建Spring容器的时候可以指向BeanFactory

BeanFactory applicationContext=new ClassPathXmlApplicationContext("spring-config.xml");

注意:

并非在getBean时候才初始化对象

实际当执行new ClassPathXmlApplicationContext("spring-config.xml");时候已经初始化了对象放在容器中

getBean是去容器中已经存在的bean对象中取

Spring6如何用Log4j2日志框架(Spring内部打了很多日志,用的就是Log4j2)

spring5之后支持Log4j2

1.引入Log4j2依赖

<!--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-slf4j-impl</artifactId>
    <version>2.19.0</version>
</dependency>

2.在根的路径下(resources目录下)提供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>

再次测试

可以配置个模板

以后用就方便多了

更多推荐

Spring Boot业务系统如何实现海量数据高效实时搜索

1.概述我们都知道随着业务系统的发展和使用,数据库存储的业务数据量会越来越大,逐渐成为了业务系统的瓶颈。在阿里巴巴开发手册中也建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,请不要在创建表时就分库分表。数据库最终都是存储在磁盘上,随着数据量变大,会导致数据操

TCP IP网络编程(六) 基于UDP的服务器端、客户端

文章目录一、理解UDP1.UDP套接字的特点2.UDP内部工作原理3.UDP的高效使用二、实现基于UDP的服务器端、客户端1.UDP中的服务端和客户端没有连接2.UDP服务器端和客户端均只需要一个套接字3.基于UDP的数据I/O函数4.基于UDP的回声服务器端、客户端5.UDP客户端套接字的地址分配三、UDP的数据传输

2023研究生数学建模D题思路代码 区域双碳目标与路径规划研究

D题思路代码区域双碳目标与路径规划研究完整解题思路可看视频:2023华为杯研赛D题区域双碳目标与路径规划研究(附代码+全保姆教程)_哔哩哔哩_bilibili​www.bilibili.com/video/BV1Cm4y157CH/?spm_id_from=333.999.0.0问题一:区域碳排放量以及经济、人口、能源

Spring Security 用了那么久,你对它有整体把控吗?

文章目录1.ServletFilter:守门人的角色2.DelegatingFilterProxy:桥接Servlet和Spring的神器3.FilterChainProxy:SpringSecurity过滤器链的管家3.SecurityFilterChain:Security过滤器的串绳4.SpringSecurit

【Vue】避免Vue组件中常见的props默认值陷阱

1.对象和数组默认值的共享问题当你将一个对象或数组作为props的默认值时,它们会在组件的所有实例之间共享。这意味着如果一个组件修改了这个默认值,其他组件也会受到影响,因为它们共享同一个引用。陷阱:props:{userInfo:{type:Object,default:{}}}问题:如果一个组件修改了userInfo

基于vue3 + ant-design 自定义SVG图标iconfont的解决方案;ant-design加载本地iconfont.js不显示图标问题

基于vue3+ant-design自定义SVG图标iconfont的解决方案;ant-design加载本地iconfont.js不显示图标问题一、准备工作1、首先去阿里巴巴矢量图标库自定义添加自己的图标;网站地址https://www.iconfont.cn/整个步骤是:选择图标–添加到项目-项目设置-下载到本地已经选

Web Storage是什么?Web Storage详解

WebStorag是HTML5引入的一个非常重要的功能,可以将数据存储在本地,如保存用户的偏好设置、复选框的选中状态、文本框默认填写的值等。用户在浏览器中刷新网页时,网页通过WebStorage就可以知道用户之前所做的一些修改,而不需要将用户修改的内容存储在服务器端。WebStorage类似于Cookie,但相比Coo

【docker安装Mysql并配置主从复制】

Mysql主从复制目的:是为了后面naocs集群的服务配置做准备工作准备工作准备至少两台虚拟机或服务器,安装好了docker,找到他们的ip地址后面操作都用xshell操作来代替拉取并启动mysql镜像和容器主机的命令为mysql01,对外端口用3310来连接dockerrun-d-p3310:3306-v/home/

ubuntu在线直接升级

前几天VMware上安装了ubuntu,当时的内核版本支持(ipguard,加密软件),后来ubuntu自动升级了linux内核,导致加入软件不支持,无法访问加密文件了。后来加密软件商更新了软件,但还是赶不上linux内核更新速度,还是不能用。之前我写过手动升级内核的方法,实在有些复杂,所以借助chatgpt的提示和摸

Vuex —— 状态管理 | Module

在前面讲到了关于Vuex数据状态管理的内容,讲了Vuex的五大核心属性,在这五大核心属性中就state、mutation和actions在前面介绍Vuex状态管理和讲Vuex中的同步和异步操作已经比较熟悉了,getter是基于state的计算属性,vue中computed从data中派生出的计算属性,vuex中gett

【校招VIP】java语言考点之嵌套类&内部类

考点介绍:嵌套类&内部类问题在校招面试中经常出现。以在一个类的内部定义另一个类,这种类称为嵌套类(nestedclasses),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少最重要的是非静态嵌套类,也即是被称作为内部类(inner)。java语言考点之嵌套类&内部类-相关题目及解析内容可点击文章末尾链接查看

热文推荐