Spring5框架之添加的新功能(日志log4j2.xml-函数式方法创建对象-@Nullable-Junit4和Junit5以及通过注解方式去实现Spring框架的测试类)

学习必须得保持心情愉( ・⊝・∞)

 Spring5框架之添加的新功能(日志log4j2.xml-函数式方法创建对象-@Nullable-Junit4和Junit5以及通过注解方式去实现Spring框架的测试类)_第1张图片

 

 

注意:添加的功能都是在新的jar包为基础,如果要实现新的功能需要导入需要的jar包。

一:通用的日志封装

Spring5框架封装日志jar包log4j2,log4j是版本4及其下面的版本

1:导入相应的jar包

Spring5框架之添加的新功能(日志log4j2.xml-函数式方法创建对象-@Nullable-Junit4和Junit5以及通过注解方式去实现Spring框架的测试类)_第2张图片 

 2:配置log4j2配置文件





    
    
        
        
            
            
        
    
    
    
    
        
            
        
    

测试日志:

package new_study.new_function;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class log_demo1 {
    private static final Logger log = LoggerFactory.getLogger(log_demo1.class); //为本类添加日志
    public static void main(String[] args) {
        log.info("11");  //日志输出11,并按配置文件的方式输出日志信息


    }
}

输出信息:(输出级别:DEBUG)

Spring5框架之添加的新功能(日志log4j2.xml-函数式方法创建对象-@Nullable-Junit4和Junit5以及通过注解方式去实现Spring框架的测试类)_第3张图片

 二:Spring框架核心:注解@Nullable

使用方法

1:在方法上面使用:表示返回值可以为空

interface demo2{

    @Nullable
    String demo();

}

2:可以使用在方法参数里面,方法参数可以为空

注意:这里提出一个疑问,在封装的类里定义方法参数为@Nullable,那么调用此方法可以填也可以不填这个方法,但是在自己创建方法里面定义参数为@Nullable那么再次调用此类就必须添加参数,如果不添加参数就报错,这是什么原因?

以GenericApplicationContext.class 中的参数为例

	public final  void registerBean(
			@Nullable String beanName, Class beanClass, BeanDefinitionCustomizer... customizers) {

		registerBean(beanName, beanClass, null, customizers);
	}

3:在属性上面使用,属性值可以为空

@Nullable
private String demo1;

三:函数式风格:GenericApplicationContext

之前的文章讲了好几种方法去实现对象的创建,有配置文件方法.注解方法等等,现在我们通过一种的新的方法去创建对象,并交给Spring进行管理。

    @Test
    public void testGAC(){
        //函数式创建对象,并将创建的对象交给Spring进行管理

        //创建对象
        demo2 dd  = new demo2();  //这个方法是我们大家经常使用的方法,创建对象,但是这种方法并没有将创建的对象交给Spring去管理,我们要通过函数式方法景创建的对象交给Spring去管理
        GenericApplicationContext genericApplicationContext = new GenericApplicationContext();
        //清空创建对象内容
        genericApplicationContext.refresh();
        //调用创建的对象进行对象的注册
        genericApplicationContext.registerBean("demo2",demo2.class,() -> new demo2());
        //获取到Spring框架中创建的对象demo2
        demo2 demo2 = (demo2)genericApplicationContext.getBean("demo2");
        System.out.println(demo2);
    }

四:使用Junit4和Junit5

什么是junit:在日常的代码中是否会用到@Test注解,这就是junit,Junit 是一个 Java 语言的单元测试框架,这个东西是程序员自测所需要的一个东西,这个测试也被称为白盒测试。

 

如果你想执行一段代码,需要main()方法去执行,但是这对于程序员来说这是非常麻烦的,Junit就是解决这种问题的,它可以帮助你当想执行代码时,不用每次创建main()方法,通过Junit中@Test也可以实现代码的运行。

Junit4:

1:导入相关的依赖

4e75c3a445e1431593f3654ee005f309.png

 2:通过注解的方法去实现测试的代码

正常的测试类:

package new_study.connect_sql;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericApplicationContext;

import java.util.ArrayList;
import java.util.List;

public class test {
    @Test
    public void add(){
        ApplicationContext context = new ClassPathXmlApplicationContext("new_study/connect_sql/bean1.xml");
        demo2 demo2 = context.getBean("demo2", demo2.class);
        demo2.select(1);
    }
}

通过注解方式来实现测试类

@RunWith(SpringJUnit4ClassRunner.class)    //使用Junit4单元测试框架
@ContextConfiguration("classpath:new_study/connect_sql/bean1.xml")  //加载配置文件
public class test {
    @Autowired
    private demo2 demo2;
    @Test
    public void  j4(){
        demo2.sout();
    }
}

Junit5:

1:导入Junit5依赖

Spring5框架之添加的新功能(日志log4j2.xml-函数式方法创建对象-@Nullable-Junit4和Junit5以及通过注解方式去实现Spring框架的测试类)_第4张图片

 通过Junit5中的@Test方法去实现测试类

@ExtendWith(SpringExtension.class)    //使用Junit5单元测试框架
@ContextConfiguration("classpath:new_study/connect_sql/bean1.xml")  //加载配置文件
public class test {
    @Autowired
    private demo2 demo2;
    @Test
    public void  j4(){
        demo2.sout();
    }
}

通过复合注解去代替类上面的两个注解

@SpringJUnitConfig(locations = "classpath:new_study/connect_sql/bean1.xml")
public class test {
    @Autowired
    private demo2 demo2;
    @Test
    public void  j4(){
        demo2.sout();
    }

这几种注解实现测试类所实现的结果都是相同的

持续输出:冲冲冲》》》》》

 

你可能感兴趣的:(小白学基础,Spring,java,spring,后端,框架,log4j)