《Spring Boot 實戰》隨記

 

第一部分 Spring 4.x

1. Spring基礎

  略過html

2. Spring經常使用配置

  2.1 Bean的scope前端

    使用@Scope註解配置scope.默認signleton,原型模式prototype
spring

  2.2 Spring EL和資源調用
    支持在xml和註解中使用表達式,須要@PropertySource註解指定文件docker

  2.3 Bean的初始化和銷燬
    使用@Bean(intiMethod="init",destroyMethod="destroy")指定初始化方法和銷燬前執行方法。shell

    使用@Bean配合類內部@PostConstruct,@PreDestroy指定初始化方法和銷燬前執行方法。後端


  2.4 項目Profile
    在容器啓動時指定profile(spring.profiles.active),@Bean在實例化時經過@Profile("xxx")指定實例化特定的示例。瀏覽器


  2.5 事件(Application Event)
    Spring事件爲Bean和Bean之間消息通訊提供支持。如當一個Bean處理完任務後,但願通知另外一個Bean作業務處理。
    1) 自定義事件,繼承ApplicationEvent 如DemoEvent extends ApplicationEvent
    2) 定義監聽器,實現ApplicationListener 如DemoListener immplements ApplicationListener
    3) 使用容器發佈事件 如在DemoPublisher中定義方法調用applicationContext.publishEvent(event)緩存

3. Spring經常使用配置

  3.1 Spring Aware安全

    當Bean須要使用容器自己的功能資源時,經過Spring aware調用容器資源。但使用了spring aware後bean和spring框架將耦合springboot

     BeanNameAware  獲取到容器中bean的名稱

    BeanFactoryAware  獲取當前bean的facory

    ApplicationContextAware  當前的applicationContext

    ApplicationEventPublisherAware   應用事件發佈器 與applicationContext.publishEvent效果相同

    ResourceLoaderAware   獲取資源加載器,可用來加載外部資源

    注:實現ApplicationContextAware可知足以上全部服務,但原則上使用到什麼就實現什麼接口

   3.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9. 企業級開發

  9.1 Spring Security

    專門針對基於Spring的項目的安全框架,充分利用了依賴注入和AOP來實現安全功能

    安全框架有兩個重要概念:認證和受權

 

  9.2 批處理Spring Batch

    Spring Batch是用來處理大量數據操做的框架,主要用來讀取大量數據,而後進行必定處理後輸出指定的形式

  9.3 消息隊列

    異步消息中有兩個重要概念:即消息代理(message brocker)和目的地(destination)。當消息發送者發送消息後,消息將由broker接管,broker保證消息傳遞到指定的目的地。

    消息隊列主要有兩種形式

      隊列queue:隊列用於點對點式消息通訊,確保每一條消息只有惟一的發送者和接收者。

      主題topic:主題用於發佈/訂閱模式的消息通訊,消息發送者發送消息到topic,多個消息接受者監聽這個主題

    JMS即JAVA消息服務,是基於JVM消息代理的規範,ActiveMQ是JMS規範的一種實現。

    AMQP是另外一種消息代理規範,兼容JMS,支持跨語言和平臺。RabbitMQ是AMQP規範的一種實現

    

    

    

 

10. 開發部署與測試

  10.1 熱部署

  在使用模板開發前端頁面時,模板引擎默認開啓緩存,此時修改頁面代碼刷新後頁面上不能即時生效,能夠在application.properties配置文件中關閉模板引擎緩存:

  spring.thymeleaf.cache=false

  spring.freemarker.cache=false

  spring.groovy.template.cache=false

  spring.velocity.cache=false

   後端代碼熱部署:①使用Spring Loaded插件,須要在項目啓動時指定vm啓動參數

           ②使用JRebel

           ③使用spring-boot-devtools,項目中添加依賴

          <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-devtools</artifactId>
               </dependency>

  10.2 部署方式

    支持以jar和war方式部署,支持以系統服務的方式運行jar包

  10.3 雲部署

    使用docker部署應用(本書實例是docker+docker-compose)

  10.4 測試

    在SpringBoot中使用@SpringApplicationConfiguration來配置Application Context

事例:

  @RunWith(SpringRunner.class)
  @SpringBootTest

11.應用監控

  springboot提供了一系列的端點監控項目,端點能夠在yml或properties配置文件中進行開啓和關閉;

  自定義端點:須要繼承AbstractEndpoint,是用註解@ConfigurationPropertis(prefix="endpoint.xxx")支持能夠在配置文件中經過endpoint.xxx配置端點

  11.1 http方式監控

    經過在項目中集成依賴,來支持端點

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
       <groupId>org.springframework.hateoas</groupId>
       <artifactId>spring-hateoas</artifactId>
       <version>0.17.0.RELEASE</version>
</dependency>

 

    經過瀏覽器訪問 http://ip:port/actuator/便可查看全部暴露出來的端點

  注意:springboot 1.x 與springboot 2.x有部分差異(訪問路徑等)

 

  11.2 JMX方式

    使用jconsole監控項目,如需監控服務器上的應用須要遠程鏈接

  11.3 SSH方式(在2.x版本中已廢棄)

    在pom文件中依賴

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>

     在項目啓動時會在控制檯打印除ssh的登陸密碼,使用ssh客戶端工具鏈接便可

相關文章
相關標籤/搜索