什么时候在 spring mvc 中使用依赖注入?
When to use dependency Injection in spring mvc?
我正在处理一个 Spring MVC 项目,我正在处理不同类型的服务,存储库,即 class 用 @Service
和 @Repository
注释的项目。我对几个问题感到困惑:
何时使用 @AutoWired
注释?
我见过各种使用这个的存储库:
CourseRepository crepo=new CourseRepository();
我也看到了这个
@AutoWired
private CourseRepository crepo;
应该使用以上选项中的哪一个来获取实例
服务中的存储库 class?
我可以将 @AutoWired
用于未用 @Repository
注释的 class 或
@Service
?
我是这个 java world.Any 的初学者,我们将不胜感激。
谢谢
您将 new
用于 数据对象 ,这在大多数现代体系结构中是被动的(它们不是“主动记录”)。其他所有内容都是 服务对象 ,您应该注入它们。 (您确实使用 new
的一个地方是 @Bean
方法,它是创建服务对象的“工厂”;在这种情况下,您通常将依赖项作为方法参数传递。)
注意,建议使用构造函数注入,而不是字段注入;它使您的代码更易于测试,并消除了某些类型错误的可能性。事实上,如果使用构造函数注入,则根本不需要在您的服务 class 中有任何 Spring 注释;可以使用 @Import
指令或 @Bean
配置上的方法注册 bean class.
依赖注入意味着框架是处理 classes 实例化的框架,class 的对象将被注入(感谢 @Autowired 注释)在 class 在你需要的地方。换句话说,您不需要使用 new 运算符自己实例化服务和存储库 classes,您只需要告诉框架需要注入那些 classes,这就是您使用 @ 的原因自动装配注释。
您应该 @Autowire
依赖项而不是自己实例化它。这样做,服务和回购层将松散耦合。此外,如果依赖项是自动装配的,则可以在服务的 JUnit 测试 class 中轻松注入模拟存储库。最后,使用以下内容:
@Autowired
私人 CourseRepository crepo;
未使用以下任何构造型注释进行注释的 class 将不会出现在 Spring 的 IoC(控制反转)容器中。因此,在未使用以下任何注释进行注释的 class 中自动装配毫无意义。
@Component、@Controller、@Service、@Repository
我正在处理一个 Spring MVC 项目,我正在处理不同类型的服务,存储库,即 class 用 @Service
和 @Repository
注释的项目。我对几个问题感到困惑:
何时使用
@AutoWired
注释?我见过各种使用这个的存储库:
CourseRepository crepo=new CourseRepository();
我也看到了这个
@AutoWired private CourseRepository crepo;
应该使用以上选项中的哪一个来获取实例 服务中的存储库 class?
我可以将
@AutoWired
用于未用@Repository
注释的 class 或@Service
?
我是这个 java world.Any 的初学者,我们将不胜感激。 谢谢
您将 new
用于 数据对象 ,这在大多数现代体系结构中是被动的(它们不是“主动记录”)。其他所有内容都是 服务对象 ,您应该注入它们。 (您确实使用 new
的一个地方是 @Bean
方法,它是创建服务对象的“工厂”;在这种情况下,您通常将依赖项作为方法参数传递。)
注意,建议使用构造函数注入,而不是字段注入;它使您的代码更易于测试,并消除了某些类型错误的可能性。事实上,如果使用构造函数注入,则根本不需要在您的服务 class 中有任何 Spring 注释;可以使用 @Import
指令或 @Bean
配置上的方法注册 bean class.
依赖注入意味着框架是处理 classes 实例化的框架,class 的对象将被注入(感谢 @Autowired 注释)在 class 在你需要的地方。换句话说,您不需要使用 new 运算符自己实例化服务和存储库 classes,您只需要告诉框架需要注入那些 classes,这就是您使用 @ 的原因自动装配注释。
您应该
@Autowire
依赖项而不是自己实例化它。这样做,服务和回购层将松散耦合。此外,如果依赖项是自动装配的,则可以在服务的 JUnit 测试 class 中轻松注入模拟存储库。最后,使用以下内容:@Autowired 私人 CourseRepository crepo;
未使用以下任何构造型注释进行注释的 class 将不会出现在 Spring 的 IoC(控制反转)容器中。因此,在未使用以下任何注释进行注释的 class 中自动装配毫无意义。
@Component、@Controller、@Service、@Repository