整合日志框架

1.整个的spring5框架的代码基于java8实现,运行的时候兼容jdk9,许多不建议使用的类和方法已经在代码库中删除了
2.Spring5自带了通用的日志封装,但它可以整合其他的第三方日志
1.spring5已经移除Log4jConfigListener,官方建议使用Log4j2
2.spring5框架整合了Log4j2
添加依赖

  1. <dependency>
  2. <groupId>org.slf4j</groupId>
  3. <artifactId>slf4j-api</artifactId>
  4. <version>1.7.30</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.logging.log4j</groupId>
  8. <artifactId>log4j-slf4j-impl</artifactId>
  9. <version>2.13.3</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.logging.log4j</groupId>
  13. <artifactId>log4j-core</artifactId>
  14. <version>2.13.3</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.apache.logging.log4j</groupId>
  18. <artifactId>log4j-api</artifactId>
  19. <version>2.13.3</version>
  20. </dependency>

创建log4j2.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--日志级别以及优先级排序:OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>ALL-->
  3. <!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trance时,可以看到log4j2内部各种详细输出-->
  4. <configuration status="INFO">
  5. <!--先定义所有的appender-->
  6. <appenders>
  7. <!--输出日志信息到控制台-->
  8. <console name="Console" target="SYSTEM_OUT">
  9. <!--控制日志输出的格式-->
  10. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
  11. </console>
  12. </appenders>
  13. <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
  14. <!--root:用于指定项目的根日志,如果没有单独指定logger,则会使用root作为默认的日志输出-->
  15. <loggers>
  16. <root level="info">
  17. <appender-ref ref="Console"/>
  18. </root>
  19. </loggers>
  20. </configuration>

代码输出

  1. private static final Logger log = LoggerFactory.getLogger(TestAccount.class);//当前类
  2. @Test
  3. public void test2(){
  4. log.info("hello");
  5. }

Spring5框架核心容器

支持@Nullable注解

1.@Nullable注解可以使用在方法上面,属性上面,参数上面,表示方法返回值可以为空,属性值可以为空,参数值可以为空
2.注解用在方法上,方法返回值可以为空

  1. @Nullable
  2. String getId();

3.注解使用在方法参数里面,方法参数可以为空

  1. public <T> void registerBean(@Nullable String beanName,
  2. this.reader.registerBean(beanClass,beanName)){
  3. }

4.注解使用在属性上,表示属性可以为空

  1. @Nullable
  2. private String username;

支持函数式风格GenericApplicationContext

  1. public void testGenericApplicationContext(){
  2. //1.创建GenericApplicationContext
  3. GenericApplicationContext context = new GenericApplicationContext();
  4. //2.调用context的方法对象注册
  5. context.refush();//表示把内容清空要进行注册
  6. context.registerBean("user",User.class,()->new User());//在spring中完成注册
  7. //3.获取在spring注册的对象
  8. User user = (User)context.getBean("user");
  9. }