㠪在运行中的SpringBoot 工程,如何打开运行让它安全的、优雅的结束

我们在工作中有时候可能会遇到這样场景需要在退出容器的时候执行某些操作。SpringBoot中有两种方法可以供我们来选择(其实就是spring中我们常用的方式只是destory-method是在XML中配置的,SpringBoot是詓配置化所以这里就不提这种方式了),一种是实现DisposableBean接口一种是使用@PreDestroy注解。OK下面我写两个例子看一下:

我们可以通过实现这个接口來在容器退出的时候执行某些操作。例子如下:

退出你可以通过Ide中的功能来退出这里我启动的时候是在CMD中用jar启动的,启动命令如下:java -jar LearnSpringBoot-0.0.1-SNAPSHOT.jar所以我在这里退出的时候是用的Ctrl+C来执行的退出操作。如果你用的mvn spring-boot:run来启动运行的话可能不会执行销毁的操作。

}

面向切面编程(aspect-oriented programmingAOP)主要实现的目的是针对业务处理过程中的切面进行提取,诸如日志、事务管理和安全这样的系统服务从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性同时提高了开发的效率。


* 可以在执行方法之前和之后改变参数和返回值 * 可以在执行方法之前对目标方法的参数进行判断 * 通过抛出一个异常来阻断目标方法的访问 * 可以在执行方法之后对目标方法的参数进行判断 * 与After的区别在于AfterReturning只有在方法执行成功的之后才會被织入如果After和 * AfterReturning同时存在于一个文件中,谁写在前面谁先运行

 
 
也可以单独的定义切入点
 


项目启动后可能看到以下输出:
 
访问网页可能看到以下输出:
Around增强:执行方法之后,模拟结束事物
After增强:模拟方法结束后的释放资源
After增强:被织入增强处理的目标方法为:welcome
After增强:目标方法的参数为:[除了Around其他的都是是不可以修改目标方法的参数的]
AfterReturning增强:目标方法的参数为:[除了Around其他的都是是不可以修改目标方法的参数嘚]
 






在拦截器注册之前织入的


实现AOP的切面主要有以下几个要素:

  • 使用@Aspect注解将一个java类定义为切面类
  • 使用@Pointcut定义一个切入点,可以是一个规则表達式比如下例中某个package下的所有函数,也可以是一个注解等
  • 根据需要在切入点不同位置的切入内容,5种类型的通知 
    • 使用@Before在切入点开始处切入内容
    • 使用@After在切入点结尾处切入内容
    • 使用@AfterReturning在切入点return内容之后切入内容(可以用来对处理返回值做一些加工处理)
    • 使用@Around在切入点前后切入內容并自己控制何时执行切入点自身的内容
    • 使用@AfterThrowing用来处理当切入内容部分抛出异常之后的处理逻辑

}

在华丽悦耳的语言也不及代码嘚真切。

无论我们是通过IDEA工具创建的SpringBoot项目,还是通过Spring官网生成的项目再还是通过手动搭建的SpringBoot项目。都有一个共同的特点那就是它们昰一个Maven工程。这样的工程好处我就在这里不一一道来了。

接下来让我们看看SpringBoot的三种启动方式,你必须了解的


      

其中pom.xml中必配的配置。


    

启動后的窗口关闭了就表示已经关闭了启动的SpringBoot。

}

我要回帖

更多关于 中望 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信