Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在没有任何xml配置文件的情况下使用Spring注入Java对象吗?_Java_Spring - Fatal编程技术网

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

我可以在没有任何xml配置文件的情况下使用Spring注入Java对象吗?,java,spring,Java,Spring,我想以编程方式使用Spring注入一个普通java对象,而不使用任何xml配置。想要注入带有标签的字段/方法,如@EJB,@PostConstruct等。这可能吗?谢谢 是的,您可以使用@Component、@Service、@Controller、或@Respository(取决于其职责)对任何POJO进行注释,它将成为SpringBean。您只需将这一行放入applicationContext.xml: <context:component-scan base-package="org

我想以编程方式使用Spring注入一个普通java对象,而不使用任何xml配置。想要注入带有标签的字段/方法,如
@EJB
@PostConstruct
等。这可能吗?谢谢

是的,您可以使用
@Component
@Service
@Controller
、或
@Respository
(取决于其职责)对任何POJO进行注释,它将成为SpringBean。您只需将这一行放入
applicationContext.xml

<context:component-scan base-package="org.yourbasepackage" />

您还可以使用
@PostConstruct
@PreDestroy
代替xml
init方法
销毁方法


更新:有一个名为SpringJavaConfig的项目。它的一部分已经成为核心弹簧的一部分,你可以看到。简而言之,它允许您使用java类而不是xml来配置bean。

可以找到关于基于注释的Spring配置的文档。您将需要最少的XML,以便Spring知道如何查找基于注释的配置:

<context:component-scan base-package=".." />

完成后,您可以使用
@Autowired
注释来设置bean。

创建不带XML的应用程序上下文(使用注释ConfigApplicationContext) 使用,您根本不需要任何XML。您可以通过编程方式创建应用程序上下文,并且

a) 人工

b) 或

如果您使用一个方便的构造函数

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

自动连接现有的非SpringBean(使用AutowireCapableBeanFactory) 对于自动连接现有bean,我认为首选的习惯用法是使用

appContext.getAutowireCapableBeanFactory().autowireBean(existingBean)
或者,如果您想要更多的控制,请使用

appContext.getAutowireCapableBeanFactory()
      .autowireBeanProperties(
          existingBean,
          autowireMode,
          // e.g. AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE 
          dependencyCheck
      ) 
有关进一步参考,请参阅


有什么区别?您是否阅读了文档?annotation config
仅在定义它的同一应用程序上下文中查找bean上的注释。组件扫描在上面的示例中,将扫描
com.acme包
,查找任何
@component
-注释类,这些类将在容器中注册为SpringBean定义。Spring javaconfig文档-
上下文:注释配置
不起作用。它检测现有bean上的注释。这就是我想要的。顺便说一句,如果我创建了这个对象(不是由Spring创建的),我可以使用Spring将依赖项注入这个对象吗?我认为这个太简单了,似乎ctx.autowireBean(bean)和更多的方法可以做到这一点。@seanizer:谢谢你的回答!否决票?我肯定不是在使用基于java的配置,一个bean读取外部文件以按类名创建对象。对象可以相互自动关联。在创建其他bean的过程中如何注册它们?@VadimKirilchuk提出了一个新问题!
appContext.getAutowireCapableBeanFactory().autowireBean(existingBean)
appContext.getAutowireCapableBeanFactory()
      .autowireBeanProperties(
          existingBean,
          autowireMode,
          // e.g. AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE 
          dependencyCheck
      )