google / google/auto

AutoFactory: Add a way to inject directly, without Provider

Open
#318 17 comments 0 reactions 1 assignee Claimed by @gk5885 View on GitHub
Component: factory P3 type=addition
Dominant language
Java
Stars
10.6k
Forks
1.2k
Avg merge
6h 32m
Merged PRs (30d)
13

Description

Currently it's only possible for factory parameters to be injected as Providers. In certain DI frameworks (e.g., spring), Provider#get can be slow (lots of reflection) or even dangerous (dependency graph isn't validated until request processing as opposed to startup).

Make sense to add this?

``` java
/**
* An annotation to be applied to parameters that should be provided by an
* {@linkplain javax.inject.Inject injected} value in a generated factory.
* Unlike {@link Provided}, this does not use {@link Provider} injection.
*/
@Target(PARAMETER)
public @interface Injected {}
```

Could also be an option to Provided but naming seems like it'd be clunky.

``` java
@Provided(direct=true) String hmm,
@Provided(noProvider=true) String maybe,
@Provided(provider=false) String err
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.