InstanceSupplier, usually in
the form of a BeanInstanceSupplier that retains the executable
that is used to instantiate the bean. Takes care of registering the
necessary hints if reflection or a JDK proxy is required.
Generated code is usually a method reference that generates the
BeanInstanceSupplier, but some shortcut can be used as well such as:
InstanceSupplier.of(TheGeneratedClass::getMyBeanInstance);
BeanRegistrationCodeFragments
| Modifier and Type | Class and Description |
|---|---|
| private static class | InstanceSupplierCodeGenerator.KotlinDelegate
Inner class to avoid a hard dependency on Kotlin at runtime. |
| private static class |
| Modifier and Type | Field and Description |
|---|---|
| private final boolean | |
| private static final String | |
| private final ClassName | |
| private final GeneratedMethods | |
| private final GenerationContext | |
| private static final CodeBlock | |
| private static final Modifier[] | |
| private static final String |
| Access | Constructor and Description |
|---|---|
| public | InstanceSupplierCodeGenerator(GenerationContext
the generation context generationContext, ClassName the class name of the bean to instantiate className, GeneratedMethods the generated methods generatedMethods, boolean whether a direct supplier may be used rather
than always needing an allowDirectSupplierShortcut)InstanceSupplierCreate a new instance. |
| Modifier and Type | Method and Description |
|---|---|
| private void | buildGetInstanceMethodForConstructor(MethodSpec.
|
| private void | buildGetInstanceMethodForFactoryMethod(MethodSpec.
|
| public CodeBlock | Returns: the generated codethe bean to handle registeredBean, Executable the executable to use to create the bean constructorOrFactoryMethod)Generate the instance supplier code. |
| private CodeBlock | generateCodeForAccessibleConstructor(String beanName, Class<?> beanClass, Constructor<?> constructor, boolean dependsOnBean, Class<?> declaringClass)
|
| private CodeBlock | generateCodeForAccessibleFactoryMethod(String beanName, Method factoryMethod, Class<?> declaringClass, boolean dependsOnBean)
|
| private CodeBlock | |
| private CodeBlock | |
| private CodeBlock | generateCodeForInaccessibleConstructor(String beanName, Class<?> beanClass, Constructor<?> constructor, boolean dependsOnBean, Consumer<ReflectionHints> hints)
|
| private CodeBlock | generateCodeForInaccessibleFactoryMethod(String beanName, Method factoryMethod, Class<?> declaringClass)
|
| private GeneratedMethod | |
| private CodeBlock | generateInstanceSupplierForFactoryMethod(Method factoryMethod, Class<?> suppliedType, Class<?> declaringClass, String factoryMethodName)
|
| private CodeBlock | generateNewInstanceCodeForConstructor(boolean dependsOnBean, Class<?> declaringClass, CodeBlock args)
|
| private CodeBlock | generateNewInstanceCodeForMethod(boolean dependsOnBean, Class<?> declaringClass, String factoryMethodName, CodeBlock args)
|
| private CodeBlock | |
| private CodeBlock | |
| private CodeBlock | |
| private CodeBlock | |
| private AccessControl. | |
| private boolean | |
| private void | registerRuntimeHintsIfNecessary(RegisteredBean registeredBean, Executable constructorOrFactoryMethod)
|
| allowDirectSupplierShortcut | back to summary |
|---|---|
| private final boolean allowDirectSupplierShortcut | |
| ARGS_PARAMETER_NAME | back to summary |
|---|---|
| private static final String ARGS_PARAMETER_NAME | |
| className | back to summary |
|---|---|
| private final ClassName className | |
| generatedMethods | back to summary |
|---|---|
| private final GeneratedMethods generatedMethods | |
| generationContext | back to summary |
|---|---|
| private final GenerationContext generationContext | |
| NO_ARGS | back to summary |
|---|---|
| private static final CodeBlock NO_ARGS | |
| PRIVATE_STATIC | back to summary |
|---|---|
| private static final Modifier[] PRIVATE_STATIC | |
| REGISTERED_BEAN_PARAMETER_NAME | back to summary |
|---|---|
| private static final String REGISTERED_BEAN_PARAMETER_NAME | |
| InstanceSupplierCodeGenerator | back to summary |
|---|---|
| public InstanceSupplierCodeGenerator(GenerationContext generationContext, ClassName className, GeneratedMethods generatedMethods, boolean allowDirectSupplierShortcut) Create a new instance.
| |
| buildGetInstanceMethodForConstructor | back to summary |
|---|---|
| private void buildGetInstanceMethodForConstructor(MethodSpec. | |
| buildGetInstanceMethodForFactoryMethod | back to summary |
|---|---|
| private void buildGetInstanceMethodForFactoryMethod(MethodSpec. | |
| generateCode | back to summary |
|---|---|
| public CodeBlock generateCode(RegisteredBean registeredBean, Executable constructorOrFactoryMethod) Generate the instance supplier code.
| |
| generateCodeForAccessibleConstructor | back to summary |
|---|---|
| private CodeBlock generateCodeForAccessibleConstructor(String beanName, Class<?> beanClass, Constructor<?> constructor, boolean dependsOnBean, Class<?> declaringClass) | |
| generateCodeForAccessibleFactoryMethod | back to summary |
|---|---|
| private CodeBlock generateCodeForAccessibleFactoryMethod(String beanName, Method factoryMethod, Class<?> declaringClass, boolean dependsOnBean) | |
| generateCodeForConstructor | back to summary |
|---|---|
| private CodeBlock generateCodeForConstructor(RegisteredBean registeredBean, Constructor<?> constructor) | |
| generateCodeForFactoryMethod | back to summary |
|---|---|
| private CodeBlock generateCodeForFactoryMethod(RegisteredBean registeredBean, Method factoryMethod) | |
| generateCodeForInaccessibleConstructor | back to summary |
|---|---|
| private CodeBlock generateCodeForInaccessibleConstructor(String beanName, Class<?> beanClass, Constructor<?> constructor, boolean dependsOnBean, Consumer<ReflectionHints> hints) | |
| generateCodeForInaccessibleFactoryMethod | back to summary |
|---|---|
| private CodeBlock generateCodeForInaccessibleFactoryMethod(String beanName, Method factoryMethod, Class<?> declaringClass) | |
| generateGetInstanceSupplierMethod | back to summary |
|---|---|
| private GeneratedMethod generateGetInstanceSupplierMethod(Consumer<MethodSpec. | |
| generateInstanceSupplierForFactoryMethod | back to summary |
|---|---|
| private CodeBlock generateInstanceSupplierForFactoryMethod(Method factoryMethod, Class<?> suppliedType, Class<?> declaringClass, String factoryMethodName) | |
| generateNewInstanceCodeForConstructor | back to summary |
|---|---|
| private CodeBlock generateNewInstanceCodeForConstructor(boolean dependsOnBean, Class<?> declaringClass, CodeBlock args) | |
| generateNewInstanceCodeForMethod | back to summary |
|---|---|
| private CodeBlock generateNewInstanceCodeForMethod(boolean dependsOnBean, Class<?> declaringClass, String factoryMethodName, CodeBlock args) | |
| generateParameterTypesCode | back to summary |
|---|---|
| private CodeBlock generateParameterTypesCode(Class<?>[] parameterTypes, int offset) | |
| generateResolverForConstructor | back to summary |
|---|---|
| private CodeBlock generateResolverForConstructor(Class<?> beanClass, Constructor<?> constructor, int parameterOffset) | |
| generateReturnStatement | back to summary |
|---|---|
| private CodeBlock generateReturnStatement(GeneratedMethod generatedMethod) | |
| generateWithGeneratorCode | back to summary |
|---|---|
| private CodeBlock generateWithGeneratorCode(boolean hasArguments, CodeBlock newInstance) | |
| getAccessVisibility | back to summary |
|---|---|
| private AccessControl. | |
| isThrowingCheckedException | back to summary |
|---|---|
| private boolean isThrowingCheckedException(Executable executable) | |
| registerRuntimeHintsIfNecessary | back to summary |
|---|---|
| private void registerRuntimeHintsIfNecessary(RegisteredBean registeredBean, Executable constructorOrFactoryMethod) | |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public static boolean |
| KotlinDelegate | back to summary |
|---|---|
| private KotlinDelegate() | |
| hasConstructorWithOptionalParameter | back to summary |
|---|---|
| public static boolean hasConstructorWithOptionalParameter(Class<?> beanClass) | |
| Modifier and Type | Field and Description |
|---|---|
| private final AutowireCandidateResolver |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| private void | |
| public void | |
| public void |
| candidateResolver | back to summary |
|---|---|
| private final AutowireCandidateResolver candidateResolver | |
| ProxyRuntimeHintsRegistrar | back to summary |
|---|---|
| public ProxyRuntimeHintsRegistrar(AutowireCandidateResolver candidateResolver) | |
| registerProxyIfNecessary | back to summary |
|---|---|
| private void registerProxyIfNecessary(RuntimeHints runtimeHints, DependencyDescriptor dependencyDescriptor) | |
| registerRuntimeHints | back to summary |
|---|---|
| public void registerRuntimeHints(RuntimeHints runtimeHints, Method method) | |
| registerRuntimeHints | back to summary |
|---|---|
| public void registerRuntimeHints(RuntimeHints runtimeHints, Constructor<?> constructor) | |