Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
将手动创建的对象加载到spring上下文_Spring_Spring Boot - Fatal编程技术网

将手动创建的对象加载到spring上下文

将手动创建的对象加载到spring上下文,spring,spring-boot,Spring,Spring Boot,我使用new操作符创建了一个对象。在Spring中,有没有办法在Spring应用程序上下文中加载这个对象 我做了一些研究,但找不到有效的解决办法。提前感谢。您可以使用Spring的@Configuration类并在其中定义@Bean方法。在该方法中,创建自定义的新对象,并确保返回该对象 @Bean public YourType methodName() { //code here.. return new YourType(); } 将其放入@Configuration类和r

我使用
new
操作符创建了一个对象。在Spring中,有没有办法在Spring应用程序上下文中加载这个对象


我做了一些研究,但找不到有效的解决办法。提前感谢。

您可以使用Spring的
@Configuration
类并在其中定义
@Bean
方法。在该方法中,创建自定义的
对象,并确保返回该对象

@Bean
public YourType methodName() {
    //code here..
    return new YourType();
}
将其放入
@Configuration
类和
return new YourType()返回的对象中将注册到您的Spring上下文中。

  • 若您在Spring应用程序启动后创建一个对象,并且希望将其注册为Spring的bean,那个么您可以这样做。也就是说,只有在运行时,您才会知道如何创建该对象,或者该对象是由您无法控制的外部框架创建的。我只是不记得那些框架了,有些框架使用了这个工具

感谢您的评论,但在我的例子中,我在运行时从外部文件夹加载类,并使用Jar类加载器创建对象,即我已经创建了对象。我可以把这个对象放在spring上下文中吗?这有什么区别?只需将您从新操作符创建的对象返回到带有@Bean注释的方法中即可。无论您如何获取对象,您是否从REST/XML解压对象,是否通过网络、文件I/O或其他方式接收对象。。这就是为什么我明确地将示例类命名为
YourType
。它可以是你想要的任何东西。谢谢。这就是我要找的。
     //Get hold of application context, you can autowire it
     ConfigurableApplicationContext context;
            
     ServiceX servicex = //This object was created outside spring framework.

     //Register it with spring
     context.getBeanFactory().registerSingleton("servicex", servicex);

     //Above bean is now available as part of spring application context.