To be clear, most (all?) DI frameworks are available with plain classes without annotations. They do use reflection to figure out which parameter goes where, but that's it.
public class Foo {
public Foo(Bar bar, Baz baz) {}
}
Is a perfectly valid class as far as most DI frameworks are concerned.