詳解SpringBoot應(yīng)用服務(wù)啟動(dòng)與安全終止
SpringBoot應(yīng)用服務(wù)啟動(dòng)
參照官方示例工程可以快速搭建簡(jiǎn)單SpringBoot應(yīng)用,官方連接如下:http://projects.spring.io/spring-boot/#quick-start
閑話少敘,上代碼:
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
通過該main()函數(shù)作為入口,可以啟動(dòng)SpringBoot服務(wù)。雖然這里只有幾行代碼,當(dāng)時(shí)已經(jīng)是一個(gè)完整的web程序。
有幾個(gè)注解需要特殊說明一下,我在開發(fā)的時(shí)候就在這幾個(gè)注解上吃了不少虧。
@EnableAutoConfiguration:這個(gè)注解告訴Spring Boot根據(jù)添加的jar依賴猜測(cè)你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發(fā)一個(gè)web應(yīng)用并相應(yīng)地對(duì)Spring進(jìn)行設(shè)置。
@ComponentScan:注解搜索beans,并結(jié)合@Autowired構(gòu)造器注入。
@SpringBootApplication:等價(jià)于以默認(rèn)屬性使用@Configuration,@EnableAutoConfiguration和@ComponentScan,不過該注解只搜索該包同級(jí)的包和下級(jí)的包?。。。。?!
SpringBoot應(yīng)用安全終止
由于SpringBoot集成了tomcat,所以當(dāng)SpringBoot應(yīng)用啟動(dòng)之后,不能像對(duì)普通的tomcat操作一下來操作SpringBoot,不過SpringBoot封裝了啟動(dòng),停止的方法。
SpringBoot,作為Spring框架對(duì)“約定優(yōu)先于配置(Convention Over Configuration)”理念的最佳實(shí)踐的產(chǎn)物,它能幫助我們很快捷的創(chuàng)建出獨(dú)立運(yùn)行、產(chǎn)品級(jí)別的基于Spring框架的應(yīng)用,大部分Spring Boot應(yīng)用只需要非常少的配置就可以快速運(yùn)行起來,是一個(gè)與微服務(wù)(MicroServices)相當(dāng)契合的微框架。
主要有兩種方式:通過HTTP發(fā)送shutdown信號(hào),或者通過service stop的方式,本文只介紹HTTP方式。
1.在pom.xml中引入actuator依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2.在application.properties文件開啟shutdown endpoint,SpringBoot的endpoints.shutdown.enabled默認(rèn)是關(guān)閉的。
#啟用shutdown endpoints.shutdown.enabled=true #禁用密碼驗(yàn)證 endpoints.shutdown.sensitive=false
3.發(fā)送停止信號(hào),使用curl向服務(wù)器發(fā)送post請(qǐng)求:
curl -X POST host:port/shutdown
將會(huì)得到返回消息如下:
{"message":"Shutting down, bye..."}
4.可以看出此方法非常方便,但是也很不安全,正式使用時(shí),必須對(duì)該請(qǐng)求進(jìn)行必要的安全設(shè)置,可以借助spring-boot-starter-security進(jìn)行身份認(rèn)證:
pom.xml添加security依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
application.properties中變更配置
#開啟shutdown的安全驗(yàn)證
endpoints.shutdown.sensitive=true
#驗(yàn)證用戶名
security.user.name=admin
#驗(yàn)證密碼
security.user.password=secret
#角色
management.security.role=SUPERUSER
指定路徑、IP、端口
#指定shutdown endpoint的路徑
endpoints.shutdown.path=/custompath
#也可以統(tǒng)一指定所有endpoints的路徑`management.context-path=/manage`
#指定管理端口和IP
management.port=8081
management.address=127.0.0.1
以上所述是小編給大家介紹的SpringBoot應(yīng)用服務(wù)啟動(dòng)與安全終止詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java BufferedReader相關(guān)源碼實(shí)例分析
這篇文章主要介紹了Java BufferedReader相關(guān)源碼實(shí)例分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
springboot項(xiàng)目集成swagger-bootstrap-ui全過程
這篇文章主要介紹了springboot項(xiàng)目集成swagger-bootstrap-ui全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Maven install 報(bào)錯(cuò)"程序包不存在"問題的解決方法
這篇文章主要介紹了Maven install 報(bào)錯(cuò)"程序包不存在"問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
SpringCloud基本Rest微服務(wù)工程搭建過程
這篇文章主要介紹了SpringCloud基本Rest微服務(wù)工程搭建,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
SpringBoot+微信小程序?qū)崿F(xiàn)文件上傳與下載功能詳解
這篇文章主要為大家介紹了SpringBoot整合微信小程序?qū)崿F(xiàn)文件上傳與下載功能,文中的實(shí)現(xiàn)步驟講解詳細(xì),快跟隨小編一起學(xué)習(xí)一下吧2022-03-03
Java詳解多線程協(xié)作作業(yè)之信號(hào)同步
信號(hào)量同步是指在不同線程之間,通過傳遞同步信號(hào)量來協(xié)調(diào)線程執(zhí)行的先后次序。CountDownLatch是基于時(shí)間維度的Semaphore則是基于信號(hào)維度的2022-05-05
確保SpringBoot定時(shí)任務(wù)只執(zhí)行一次的常見方法小結(jié)
在Spring Boot項(xiàng)目中,確保定時(shí)任務(wù)只執(zhí)行一次是一個(gè)常見的需求,這種需求可以通過多種方式來實(shí)現(xiàn),以下是一些常見的方法,它們各具特點(diǎn),可以根據(jù)項(xiàng)目的實(shí)際需求來選擇最合適的方法,需要的朋友可以參考下2024-10-10
SpringBoot使用Netty實(shí)現(xiàn)遠(yuǎn)程調(diào)用的示例
這篇文章主要介紹了SpringBoot使用Netty實(shí)現(xiàn)遠(yuǎn)程調(diào)用的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

