整合日志框架
1.整个的spring5框架的代码基于java8实现,运行的时候兼容jdk9,许多不建议使用的类和方法已经在代码库中删除了
2.Spring5自带了通用的日志封装,但它可以整合其他的第三方日志
1.spring5已经移除Log4jConfigListener,官方建议使用Log4j2
2.spring5框架整合了Log4j2
添加依赖
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.13.3</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.13.3</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.13.3</version></dependency>
创建log4j2.xml配置文件
<?xml version="1.0" encoding="UTF-8"?><!--日志级别以及优先级排序:OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>ALL--><!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trance时,可以看到log4j2内部各种详细输出--><configuration status="INFO"><!--先定义所有的appender--><appenders><!--输出日志信息到控制台--><console name="Console" target="SYSTEM_OUT"><!--控制日志输出的格式--><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></console></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><!--root:用于指定项目的根日志,如果没有单独指定logger,则会使用root作为默认的日志输出--><loggers><root level="info"><appender-ref ref="Console"/></root></loggers></configuration>
代码输出
private static final Logger log = LoggerFactory.getLogger(TestAccount.class);//当前类@Testpublic void test2(){log.info("hello");}
Spring5框架核心容器
支持@Nullable注解
1.@Nullable注解可以使用在方法上面,属性上面,参数上面,表示方法返回值可以为空,属性值可以为空,参数值可以为空
2.注解用在方法上,方法返回值可以为空
@NullableString getId();
3.注解使用在方法参数里面,方法参数可以为空
public <T> void registerBean(@Nullable String beanName,this.reader.registerBean(beanClass,beanName)){}
4.注解使用在属性上,表示属性可以为空
@Nullableprivate String username;
支持函数式风格GenericApplicationContext
public void testGenericApplicationContext(){//1.创建GenericApplicationContextGenericApplicationContext context = new GenericApplicationContext();//2.调用context的方法对象注册context.refush();//表示把内容清空要进行注册context.registerBean("user",User.class,()->new User());//在spring中完成注册//3.获取在spring注册的对象User user = (User)context.getBean("user");}
