67386
Spring Securityのクラス構造の使い方について自分用にメモしてみようと思い下記のようなPlantUMLを書きました。  
（注意：UML図はまだ書きかけでSpring Securityの構造をまだ正確にあらわしていなかったり、ミスがあったりします）

```

    @startuml SpringSecurity
    package org.springframework.security {
        package config {
            class WebSecurityConfigurerAdapter
    
            package annotation {
                package authentication {
                    package builders {
                    class AuthenticationManagerBuilder
                }
    
                package web {
                    package builders {
                        class HttpSecurity
                        class WebSecurity
                    }
    
                    package configuration {
                    }
                }
            }
        }
    
        package crypto {
            package factory {
                class PasswordEncoderFactories
            }
    
            package password {
                class PaswordEncoder
            }
        }
    }
    
    package com.example {
        class ExampleWebSecurityConfigurerAdapter
    
        WebSecurityConfigurerAdapter <|-- ExampleWebSecurityConfigurerAdapter
        ExampleWebSecurityConfigurerAdapter *-- AuthenticationManagerBuilder
    }
    @enduml
    
```

出力された画像が下記です。

[![画像の説明をここに入力](https://i.stack.imgur.com/8FTjU.png)](https://i.stack.imgur.com/8FTjU.png)

`buildersパッケージ`が、`authenticationパッケージ`と`webパッケージ`に別々に存在しているのですが、`authenticationパッケージ`配下の`builders`にすべてのクラスが出力されてしまいました。ちゃんと別々に出力されるにはどうすればいいのでしょうか？
CC BY-SA 4.0
2020-06-07T05:05:10.570
67385
2020-06-07T05:10:30.540
2020-06-07T05:10:17.773
9008
9008
question
uml plantuml
同名パッケージがあると同じ名前のパッケージにクラスが入ってしまう
[Classes of same names but in different packages are represented only once -
PlantUML Q&A](https://forum.plantuml.net/6220/classes-same-names-different-
packages-represented-only-once)

上記は完全に同じ質問ではないですが、上記を参考に `package`ではなく `namespace`を使用することで解決しました。  
（注意：UML図はまだ書きかけでSpring Securityの構造をまだ正確にあらわしていなかったり、ミスがあったりします）

```

    @startuml SpringSecurity
    namespace org.springframework.security {
        namespace config {
            class WebSecurityConfigurerAdapter
    
            namespace annotation {
                namespace authentication {
                    namespace builders {
                        class AuthenticationManagerBuilder
                    }
                }
    
                namespace web {
                    namespace builders {
                        class HttpSecurity
                        class WebSecurity
                    }
    
                    namespace configuration {
                    }
                }
            }
        }
    
        namespace crypto {
            namespace factory {
                class PasswordEncoderFactories
            }
    
            namespace password {
                class PaswordEncoder
            }
        }
    }
    
    namespace com.example {
        class ExampleWebSecurityConfigurer {
            configure()
        }
        org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter <|-- ExampleWebSecurityConfigurer
        ExampleWebSecurityConfigurer *-- org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
    }
    @enduml
    
```

出力結果:

[![画像の説明をここに入力](https://i.stack.imgur.com/LLrq3.png)](https://i.stack.imgur.com/LLrq3.png)
CC BY-SA 4.0
2020-06-07T05:05:10.570
67386
2020-06-07T05:10:30.540
2020-06-07T05:10:30.540
9008
9008
67385
answer