略過html
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.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.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.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
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客戶端工具鏈接便可