Specify visibility in @AutoFactory

And implement the specification.