2017-04-21 105 views
3

我是新来的春天。Spring @Autowired注解和ContextComponent扫描和@autowired注释对象

我已经理解了@Autowired注释并且为了使用它。我已经了解到我们应该使用1)context:annotation-config2)AutowiredAnnotationBeanPostProcessor。但是当我看到一个示例项目时,我没有发现任何东西,所以使用上述内容是强制性的。


我想到@Autowired注解将创建对象时,我们在服务器上部署我们的的web.xml,因为当我已经测试独立的应用程序,我们使用公共静态无效的主要(字符串[] args)来调用bean类。但是在web项目中,我们没有任何类似的东西,所以当我们将web.xml部署到服务器或包含spring配置的application.xml中时,会创建对象。

我的理解在上述2个想象中是正确的。

请帮帮我。

+0

你可以使用'jvisualvm.exe'来检查 –

+0

什么是jvisualvm.exe? – jack0989

+0

什么是谷歌?谷歌“什么是jvisualvm.exe” –

回答

1

当使用xml文件时,您需要为各自的依赖添加PostProcessor Bean。你可以跳过这个如果你使用

<context:annotation-config/> 

这将意味着你不需要添加任何annotationPostProcessors。这将包括所有这些。其次,当你使用Autowire注释时,你是按类型自动布线的。你告诉spring,在初始化过程中设置这个字段的值。

通常情况下,你需要做的是,在应用程序的主,

  1. 获取ApplicationContext中。
  2. 使用ApplicationContext,从XML获取requiredBean。
  3. 在服务类中设置bean。

您可以通过在您的服务类中自动装配bean来跳过这些步骤。让我知道您是否了解这一点。

+0

感谢您的解释,第一我明白,但是对于第二个。我们在独立应用程序中有这3个步骤,但是在Web项目中,我只有自动装配,并且没有获得任何应用程序上下文,并且获取所需的bean和所有这些东西。我唯一的东西是做的是 – jack0989

+0

@autwired 私人雇员雇员; employee.findEmployeeByid(Long Id); 所以我想知道什么时候这个对象被创建。它会在创建时将它部署到服务器。(web.xml或applicationcontext.xml) – jack0989

+0

我想这个Employee是一个spring库,接线这个从一些实体类获取数据。所以,当你启动你的应用程序时,那个时候所有的服务,存储库,组件,类都会在春天被调用。这时对象被设置。所以当你部署和启动你的servlet容器时,所有的自动装配依赖关系都会被设置。 –