> For the complete documentation index, see [llms.txt](https://axon-cn.ahoo.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axon-cn.ahoo.me/appendices/identifier-generation.md).

# D. 标识符生成

D. Identifier Generation

The Axon Framework uses an `IdentifierFactory` to generate all identifiers, whether they are for events, commands or queries. The default `IdentifierFactory` uses randomly generated `java.util.UUID` based identifiers. Although they are very safe to use, the process to generate them does not excel in performance.

`IdentifierFactory` is an abstract factory that uses Java's `ServiceLoader` (since Java 6) mechanism to find the implementation to use. This means you can create your own implementation of the factory and put the name of the implementation in a file called `/META-INF/services/org.axonframework.common.IdentifierFactory`. Java's `ServiceLoader` mechanism will detect that file and attempt to create an instance of the class named inside.

There are a few requirements for the `IdentifierFactory`. The implementation must:

1. Have its fully qualified class name as the contents of the `/META-INF/services/org.axonframework.common.IdentifierFactory` file on the classpath,
2. have an accessible zero-argument constructor,
3. extend `IdentifierFactory`,
4. be accessible by the context classloader of the application or by the classloader that loaded the `IdentifierFactory` class, and must
5. Be thread-safe.
