通过构造器依赖注入