我可以在没有任何xml配置文件的情况下使用Spring注入Java对象吗?

cod*_*lay 14 java spring

我想以编程方式使用Spring注入一个普通的java对象,而不使用任何xml配置.要注入与标签标注的一样田/方法@EJB,@PostConstruct等等.这可能吗?谢谢!

Sea*_*oyd 24

创建不带XML的ApplicationContext(使用AnnotationConfigApplicationContext)

使用AnnotationConfigApplicationContext,您根本不需要任何XML.您以编程方式创建应用程序上下文

a)手动注册带注释的类

appContext.register( MyTypeA.class,
                     MyTypeB.class,
                     MyTypeC.class );
Run Code Online (Sandbox Code Playgroud)

b)或扫描类路径以获取注释类

appContext.scan(
    "com.mycompany.myproject.mypackagea",
    "com.mycompany.myproject.mypackageb"
)
Run Code Online (Sandbox Code Playgroud)

如果您使用其中一个便利构造函数

AnnotationConfigApplicationContext(Class <?> ... annotatedClasses)

要么

AnnotationConfigApplicationContext(String ... basePackages)

自动创建和刷新上下文,否则您需要在添加类或包后手动调用refresh()方法.

自动装配现有的非Spring bean(使用AutowireCapableBeanFactory)

对于自动装配现有的bean,我认为首选的习惯用法是使用

appContext.getAutowireCapableBeanFactory().autowireBean(existingBean)
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要更多控制,请使用

appContext.getAutowireCapableBeanFactory()
      .autowireBeanProperties(
          existingBean,
          autowireMode,
          // e.g. AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE 
          dependencyCheck
      ) 
Run Code Online (Sandbox Code Playgroud)

有关进一步参考,请参阅