Spring学习笔记1 启示录_biubiubiu0706的博客-CSDN博客
Spring官网地址:https://spring.io
<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>
再次测试
可以配置个模板
以后用就方便多了