spring5之新功能
Spring5新功能
1.基于java8 并支持jdk9
2.使用了log4j2
1.日志:
只要引入jar包,并在文件路径中 即src中协商log4j2.xml 并进行配置就可以了
log的级别限制
<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,可以看到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>
[email protected]
表示后面跟的东西 的值可以为空
主要用在方法,方法参数 ,属性上,表示方法返回值可以为空,方法参数可以为空,属性可以为空
3.函数式编程
@Test
public void generaticBean(){
GenericApplicationContext context =new GenericApplicationContext();
context.refresh();
context.registerBean("user1",User.class,()->new User());
User user = (User)context.getBean("user1");
System.out.println(user);
}
直接使用new 注册,并放在spring中进行管理
特别注释:
1。spring里面new对象的话是管理不了的,必须注册成为bean, 才能进行管理
4.整合Junit4
引入test包
然后
@RunWith(SpringJUnit4ClassRunner.class) //单元测试框架
@ContextConfiguration("classpath:bean1.xml") //加载配置文件
public class JTest4 {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}
注解显示的就是字面意思
Junit5的整合
@SpringJUnitConfig(locations = "classpath:bean1.xml")
public class JTest5 {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}
5.Webflux
1.介绍
springWebflux是spring5新添加的模块,用于web开发,功能和springMVC类似的,webflux使用的是当前一个流行的响应式编程出现的框架
2。传统的web架构如springMVC是,基于Servlet容器,而webflux是一种异步非阻塞的框架。而异步非阻塞要在servlet3.1后才支持。其核心是基于
3.常识性问题
同步: 发了请求后,等待回应才去做其他事情。
异步:发了请求后,先去做其他事情,等回应了才来继续完成
阻塞:服务器端,等手头的事情做好,再去处理请求。
非阻塞:马上处理请求,然后再去做刚才没做完的事情
webflux的特点
1.非阻塞:在有限的资源下,提高系统的吞吐量和伸缩性,以reactor为基础实现响应式编程
2.函数式编程:spring5基于java8 ,用函数式编程方式实现路由请求
与springMVC(虽然还没学,等以后学了再回头看看)
第一 两个框架都可以使用注解方式,都运行在tomcat容器里
第二 springMVC命令式编程,webflux是异步响应式编程
6.响应式编程
观察者模式(响应式):
public class observer extends Observable {
public static void main(String[] args) {
observer observer =new observer();
System.out.println(observer);
// o应该是observer的意思
observer.addObserver((o,arg)->{
System.out.println("发生变化"+arg+o);
});
observer.setChanged();
observer.notifyObservers("你好");
}
// @Override
// public String toString() {
// return "observer{}";
// }
}
3.响应式编程(Reactor实现)
至于webflux的实现,现阶段我还没有必要去弄。
以后有需求的时候再去学习