我正在学习Spring,并且有一个相当理论的问题。在这个Udacity示例中,模型类是手动启动的:
ChatMessage newMessage = new ChatMessage();这是很好的练习吗?
我将进一步阐述这一点。假设我有一个执行日期转换的DateUtil类,是使用@Component注释注册它还是自己管理它的依赖性(DateUtil dateUtil =新的DateUtil())?
因此,主要总结了问题:如何知道何时使用组件注释以及何时手动初始化类?
非常感谢!
发布于 2021-08-25 14:58:21
第一个问题的答案是,是的,它仍然可以,因为豆子被假定为单生字,尽管并不总是这样。在这种情况下,将ChatMessage类标记为bean是没有意义的,因为该类的实例将被多次创建,而且如果它们都是bean并位于应用程序上下文中,则绝对不清楚它们将获得什么好处。
回答第二个问题:我认为DateUtil类应该按照通常的方式实例化,因为它看起来像一个像StringUtils这样的常规实用程序类。也许您应该使它的方法是静态的,然后就根本不必实例化它了。但是,如果这是一个复杂的类,它包含业务逻辑和/或在应用程序启动时使用从应用程序外部接收到的一些数据进行初始化,并且这个类的这个对象被应用程序的其他类使用,那么可能值得将它作为一个bean。
第三个问题的答案是:很难给出一个明确的答案。当您想要实现控制反转而不依赖于您要注入的类时,Beans是值得创建的。将类声明为组件,使其实例成为bean必须是有意义的,为应用程序的设计带来优势。
您需要有使用Spring应用程序的经验,才能理解何时制作bean。看看一些著名的Spring应用程序,以了解在哪种情况下以及哪些类实例是被赋值的。
发布于 2021-08-25 13:26:27
如我所知,当您使用@Component (我喜欢使用@Service)创建类时,Spring将在IoC中创建bean。然后,您可以使用这个bean,使用@Autowired,使用只创建一个实例的@Component,该实例将在整个应用程序中共享。当您使用“new”方法创建对象时,您可以自己创建对象。查看bean范围文档中的更多信息。
https://stackoverflow.com/questions/68919721
复制相似问题