From f0b3661e05a9427af5254387a4d3495682bb7a91 Mon Sep 17 00:00:00 2001 From: Ian Young Date: Sun, 13 May 2018 13:44:17 +0100 Subject: [PATCH] Add diagram of context hierarchy --- README.md | 4 ++++ doc/contexts.graffle | Bin 0 -> 7573 bytes doc/contexts.png | Bin 0 -> 12518 bytes 3 files changed, 4 insertions(+) create mode 100644 doc/contexts.graffle create mode 100644 doc/contexts.png diff --git a/README.md b/README.md index 08f8e70..a191e6b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ Built using: ## Spring Contexts +The Spring application contexts in the application are arranged as follows: + +![Contexts](doc/contexts.png) + The root `ApplicationContext` in the application is the one provided by Spring Boot. This is primarily configured using Java and annotations, but the classpath resource `root-beans.xml` is also loaded into this context. This diff --git a/doc/contexts.graffle b/doc/contexts.graffle new file mode 100644 index 0000000000000000000000000000000000000000..4c4e13f710aac89b4a27e79e1ffe1b48ceb04523 GIT binary patch literal 7573 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 rxlZiYIrZ&fgQ)Vw8h0VZ`;4w34$0!8p# literal 0 HcmV?d00001 diff --git a/doc/contexts.png b/doc/contexts.png new file mode 100644 index 0000000000000000000000000000000000000000..365340bad9260b28454a79c2a5a0112462103de9 GIT binary patch literal 12518 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