1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        spring cloud/spring boot同時支持http和https訪問

        共 4501字,需瀏覽 10分鐘

         ·

        2020-09-30 12:14


        點擊上方藍色字體,選擇“標星公眾號”

        優(yōu)質(zhì)文章,第一時間送達

        ? 作者?|??涼瓜皮?

        來源 |? urlify.cn/JnmYJv

        66套java從入門到精通實戰(zhàn)課程分享

        前言

          關(guān)于spring boot同時支持http和https訪問,在spring boot官網(wǎng)73.9已經(jīng)有說明文檔了,同樣在github上也有官網(wǎng)的例子。

          在這里,我向大家講述一下,我是怎么實現(xiàn)的。

        方式一

         一、相關(guān)配置

        server:
        ??port:?4000


        https:
        ??port:?8443
        ??ssl:
        ????key-store:?classpath:sample.jks
        ????key-store-password:?secret
        ????key-password:?password

        可以看到,只是簡簡單單添加端口的信息,sample.jks可以自己生成(記得對應(yīng)密碼),也可以在官網(wǎng)例子里面下載。

         二、spring boot啟動文件讀取配置信息(注:請?zhí)砑颖匾膉ar)

        @SpringBootApplication
        public?class?GatewayApplication?{

        ????public?static?void?main(String[]?args)?throws?Exception?{
        ????????SpringApplication.run(GatewayApplication.class,?args);
        ????}

        ????@Value("${https.port}")
        ????private?Integer?port;

        ????@Value("${https.ssl.key-store-password}")
        ????private?String?key_store_password;

        ????@Value("${https.ssl.key-password}")
        ????private?String?key_password;????/*?--------------------請按照自己spring?boot版本選擇?start---------------------?*/??//?這是spring?boot?1.5.X以下版本的?添加了這個,下一個就不用添加了
        ????@Bean
        ????public?EmbeddedServletContainerFactory?servletContainer()?{
        ????????TomcatEmbeddedServletContainerFactory?tomcat?=?new?TomcatEmbeddedServletContainerFactory();
        ????????tomcat.addAdditionalTomcatConnectors(createSslConnector());?//?添加http
        ????????return?tomcat;
        ????}????//?這是spring?boot?2.0.X版本的?添加這個,上一個就不用添加了??@Bean??public?ServletWebServerFactory?servletContainer()?{????TomcatServletWebServerFactory?tomcat?=?new?TomcatServletWebServerFactory();????tomcat.addAdditionalTomcatConnectors(createSslConnector());?//?添加http????return?tomcat;??}??/*?-------------------請按照自己spring?boot版本選擇?end----------------------?*/????//?配置https
        ????private?Connector?createSslConnector()?{
        ????????Connector?connector?=?new?Connector("org.apache.coyote.http11.Http11NioProtocol");
        ????????Http11NioProtocol?protocol?=?(Http11NioProtocol)?connector.getProtocolHandler();
        ????????try?{
        ????????????File?keystore?=?new?ClassPathResource("sample.jks").getFile();
        ????????????/*File?truststore?=?new?ClassPathResource("sample.jks").getFile();*/
        ????????????connector.setScheme("https");
        ????????????connector.setSecure(true);
        ????????????connector.setPort(port);
        ????????????protocol.setSSLEnabled(true);
        ????????????protocol.setKeystoreFile(keystore.getAbsolutePath());
        ????????????protocol.setKeystorePass(key_store_password);
        ????????????protocol.setKeyPass(key_password);
        ????????????return?connector;
        ????????}
        ????????catch?(IOException?ex)?{
        ????????????throw?new?IllegalStateException("can't?access?keystore:?["?+?"keystore"
        ????????????????????+?"]?or?truststore:?["?+?"keystore"?+?"]",?ex);
        ????????}
        ????}
        }

        啟動項目后,可以看到兩個端口,說明已經(jīng)成功

        方式二

          一、相關(guān)配置

        server:
        ??port:?8443
        ??ssl:
        ????key-store:?classpath:sample.jks
        ????key-store-password:?secret
        ????key-password:?password

        http:
        ??port:?8080

          二、spring boot啟動文件讀取配置信息(注:請?zhí)砑颖匾膉ar)

        @SpringBootApplication
        public?class?SampleTomcatTwoConnectorsApplication?{

        ????@Value("${http.port}")
        ????private?Integer?port;

        ??/*?--------------------請按照自己spring?boot版本選擇?start---------------------?*/
        ????//?這是spring?boot?1.5.X以下版本的?添加了這個,下一個就不用添加了
        ????@Bean
        ????public?EmbeddedServletContainerFactory?servletContainer()?{
        ????????TomcatEmbeddedServletContainerFactory?tomcat?=?new?TomcatEmbeddedServletContainerFactory();
        ????????tomcat.addAdditionalTomcatConnectors(createStandardConnector());?//?添加http
        ????????return?tomcat;
        ????}????//?這是spring?boot?2.0.X版本的?添加這個,上一個就不用添加了??@Bean??public?ServletWebServerFactory?servletContainer()?{????TomcatServletWebServerFactory?tomcat?=?new?TomcatServletWebServerFactory();????tomcat.addAdditionalTomcatConnectors(createStandardConnector());?//?添加http????return?tomcat;??}
        /*?--------------------請按照自己spring?boot版本選擇?end---------------------?*/
        ?
        ??//?配置http
        ????private?Connector?createStandardConnector()?{
        ????????Connector?connector?=?new?Connector("org.apache.coyote.http11.Http11NioProtocol");
        ????????connector.setPort(port);
        ????????return?connector;
        ????}

        ????public?static?void?main(String[]?args)?throws?Exception?{
        ????????SpringApplication.run(SampleTomcatTwoConnectorsApplication.class,?args);
        ????}

        }

        啟動項目后,可以看到兩個端口,說明已經(jīng)成功

        ?

        總結(jié)

          對比兩種方法可以看出方式二比方式一簡單一點,主要是因為方式二用的代碼比較少,我也不知道這兩種方式有什么區(qū)別,我自己測試過,無論是spring boot還是spring cloud,這兩個方式都沒問題,就算是方式二,同樣可以幫服務(wù)注冊到eureka上。不一樣的是方式一注冊到eureka的端口是4000,方式二注冊到eureka的端口是8443。作為一個強迫的人士,在我自己的項目上,用的方式二,因為我的eureka用的http注冊服務(wù)。如果你只是spring boot,當然選擇少一點代碼的方式二啦。

          這只是我在做項目時,遇到的需求,拉出來給大家分享,如果發(fā)現(xiàn)問題,請大家提一下意見,讓我完善一下,謝謝




        粉絲福利:108本java從入門到大神精選電子書領(lǐng)取

        ???

        ?長按上方鋒哥微信二維碼?2 秒
        備注「1234」即可獲取資料以及
        可以進入java1234官方微信群



        感謝點贊支持下哈?

        瀏覽 39
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美一道本在线 | 91麻豆精品一区二区三区 | 操逼草| 一级婬片A片免费播放桃色 | 午夜黄色福利视频 | 国产视频一区二区三区四区五区 | 亚洲麻豆 | 国产清纯白嫩高中生在线播放 | 女明星yin乱聚会 | 免看一级a一片成人久久最新章节 |