在独立应用程序中使用Spring

9 浏览
0 Comments

在独立应用程序中使用Spring

我正在学习Spring,并且对于如何在独立应用程序中使用它(以及在制作Web应用程序时使用)有一个问题。到目前为止,我编写的示例使用了一个简单的主方法,其中通过在Context对象上调用getBean来检索bean。然而,您可能希望在多个类中进行此操作,所以您是首先获取上下文然后调用getBean,还是有其他更简洁的替代方法?或者这是在独立应用程序和Web应用程序中使用的方法?

0
0 Comments

使用Spring框架的独立应用程序

如果你在每个地方都调用context.getBean(),那么你可能没有理解Spring的整个意义,Spring是一个依赖注入框架。

在一个独立的应用程序中,你通常只调用一次(或者至少非常少)context.getBean(),以获取一个"根"bean。这个bean由Spring注入其他的bean,依此类推。

在Web应用程序中,一切都取决于你使用的框架。但通常情况下,你在web.xml中注册一个监听器来为你加载上下文,控制器由Spring创建和/或注入。

哦,所以你只是用它来启动应用程序。

好的,谢谢。你能解释一下你所说的我错过了DI框架的重点吗?这样我就可以去读一下。还有为什么你只能调用一次?

DI实现了好莱坞原则:"不要打电话给我,我会给你打电话"。目标是避免查找你的依赖项,而是由Spring注入它们。这就是为什么单元测试变得如此简单。如果你在上下文中查找所有的依赖项,那么你就不再使用DI了。你在main方法中只调用一次,因为这是绝对的最小值。在其他地方,你使用DI。

0
0 Comments

问题的出现原因:

在独立应用程序中使用Spring时,其中一个类(通常是主类)必须是Spring感知的,以创建上下文。所有其他类可以继续通过Spring进行连线,不需要是上下文感知的。

解决方法:

1. 在主类中,使用Spring的注解或配置文件来标识该类是Spring感知的,可以通过以下方式之一来创建Spring上下文:

- 使用注解:在主类上添加`@SpringBootApplication`注解,或使用`@Configuration`和`@ComponentScan`注解。

- 使用配置文件:在主类中使用`@ImportResource`注解,指定Spring的配置文件路径。

2. 对于其他类,可以继续使用Spring进行连线,无需进行上下文感知的操作。可以使用以下方式之一来实现:

- 使用注解:在其他类中使用`@Autowired`注解,将依赖注入到类中。

- 使用XML配置文件:在Spring的配置文件中,使用``元素来定义其他类的实例,并配置其依赖关系。

通过以上方法,可以在独立应用程序中使用Spring来管理和连接各个类,实现依赖注入和解耦的效果。

0
0 Comments

在独立应用程序中使用Spring的问题是如何初始化应用程序上下文并使用它来创建应用程序的入口点。上面的代码展示了一种解决方法,它使用ClassPathXmlApplicationContext来初始化应用程序上下文,并使用BeanFactoryUtils.beanOfType方法获取已经被Spring自动装配好的MyApplication bean,并调用其init方法。

还有一种更简洁的方式是将app.init配置为MyApplication的init-method,这样就不需要显式地获取bean和调用方法了,一切都由Spring处理。

不过有人认为显式调用方法更清晰,而且在这种简单的示例中,使用Lifecycle接口可能有点过头了。Lifecycle接口提供了start()、stop()和isRunning()方法,当在应用程序上下文上调用这些方法时,所有实现了Lifecycle接口的bean都会相应地调用相应方法。

,使用Spring在独立应用程序中的问题可以通过初始化应用程序上下文并获取已经被Spring装配好的bean来解决。这可以通过显式调用方法或配置init-method来实现。

0