当前位置: 首页 > news >正文

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

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>

再次测试

可以配置个模板

以后用就方便多了

http://www.lryc.cn/news/212233.html

相关文章:

  • 【Linux】虚拟机安装Linux、客户端工具及Linux常用命令(详细教程)
  • Day 47 动态规划 part13
  • 【广州华锐互动】飞机诊断AR远程指导系统为工程师提供更多支持
  • 【贝叶斯回归】【第 2 部分】--推理算法
  • 【深入浅出汇编语言】寄存器精讲第二期
  • 如何保证分布式情况下的幂等性
  • Mybatis特殊SQL的执行
  • MyBatis-Flex(一):快速开始
  • Vue组件化
  • nodejs+python+php+微信小程序-基于安卓android的健身服务应用APP-计算机毕业设计
  • SpringCloud 微服务全栈体系(九)
  • Mybatis 多对一和一对多查询
  • MySQL的数据库操作、数据类型、表操作
  • 音视频技术开发周刊 | 317
  • 【JavaSE专栏58】“Java构造函数:作用、类型、调用顺序和最佳实践“ ⚙️⏱️
  • Ubuntu系统HUSTOJ 用 vim 修改php.ini 重启PHP服务
  • 案例分析真题-信息安全
  • envi5.3处理高分二号影像数据辐射定标大气校正
  • C语言 结构体
  • frp-内网穿透部署-ubuntu22服务器-windows server-详细教程
  • MySQL内存使用的监控开关和使用查看
  • 数据库管理-第113期 Oracle Exadata 04-硬件选择(20231020)
  • 带着问题去分析:Spring Bean 生命周期 | 京东物流技术团队
  • C语言修行之函数篇(一)tolower —— 转换为小写字母
  • 【JavaSE专栏55】Java集合类HashTable解析
  • Apollo上机实践:一次对自动驾驶技术的亲身体验
  • QTcpServer简单的TCP服务器连接
  • LeetCode热题100——双指针
  • Ubuntu ARMv8编译Qt源码以及QtCreator
  • 虚机Centos忘记密码如何重置