为什么我应该在Java应用程序上使用Spring核心框架

时间:2017-09-27 10:08:44

标签: java spring

我是Spring框架的新手。我做了一个简单的" HelloSpring"使用Spring框架的应用程序。

POJO CLASS :-
public class HelloSpring {

private String message;

public void setMessage(String message) {
    this.message = message;
}

public String getMessage() {
    return message;
}
}

Beans.xml:

   <?xml version="1.0" encoding="UTF-8"?>
   <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="helloSpring"    class="com.dash.abinash.SpringHelloApp.HelloSpring">
       <property name="message" value="Hello World!" />
     </bean>

Client.java: -

import org.springframework.context.ApplicationContext;
import     org.springframework.context.support.ClassPathXmlApplicationContext;

public class ClientApp {
    public static void main(String[] args) {
         @SuppressWarnings("resource")
         ApplicationContext context = new     ClassPathXmlApplicationContext("Beans.xml");
         HelloSpring obj = (HelloSpring) context.getBean("helloSpring");
         System.out.println(obj.getMessage());
      }
        }

输出: -

  Sep 27, 2017 12:02:58 PM     org.springframework.context.support.ClassPathXmlApplicationContext    prepareRefresh
  INFO: Refreshing    org.springframework.context.support.ClassPathXmlApplicationContext@4534b60d:     startup date [Wed Sep 27 12:02:58 IST 2017]; root of context hierarchy
 Sep 27, 2017 12:02:58 PM     org.springframework.beans.factory.xml.XmlBeanDefinitionReader    loadBeanDefinitions
 INFO: Loading XML bean definitions from class path resource [Beans.xml]
 Hello World!

但是相同的输出,我将通过使用抽象和封装概念(getter和setter)方法获得没有Spring框架。

HelloSpring ref=new HelloSpring();
    ref.setMessage("Hello World!");
    System.out.println("Output without Spring framework "+ref.getMessage());

然后,我们为什么要使用Spring框架。 可能是一个愚蠢的问题,但如果可能的话,尽量以详细的方式向我展示。

3 个答案:

答案 0 :(得分:1)

Loose coupling是主要优势之一,探索更多你会喜欢它。

在你的例子中:

这是创建对象的方法:

 <bean id="helloSpring"    class="com.dash.abinash.SpringHelloApp.HelloSpring">
       <property name="message" value="Hello World!" />
     </bean>

春天会为你做饭和制作豆子。

Spring很聪明,它可以在多个地方重用这个对象。

Spring可以使用各种scopes

创建它们

以及更多优势,我不会在这里写博客

答案 1 :(得分:1)

它是这样的: 当你这样做时:

HelloSpring ref=new HelloSpring();
ref.setMessage("Hello World!");
System.out.println("Output without Spring framework "+ref.getMessage());

您每次都在创建一个类的实例。

但是在企业应用程序(Web应用程序)中,您需要记住这种方法对服务器不利。 所以Spring部分就是这样,你可以使用@service和HelloSpring声明一次(就像一个服务),每次你想要的时候都可以使用HelloSpring,而不必在服务器内存中为它做另一个位置。
喜欢:

@Service
public class HelloSpring{
...
...
}

正如@Yuval在评论中提到的那样,Spring提供了许多工具。您只需要浏览文档,找到有益于您的应用程序的好处。

最佳

答案 2 :(得分:0)

在您的示例中,它是用于打印某些消息的1个类。所以你用new运算符创建了对象。但在企业应用程序中,业务逻辑将跨多个java类实现。在这种情况下,如果每次内存耗尽而服务器停机时都会创建新的java实例。为了解决这个问题,我们参考了依赖注入设计模式。 Spring框架建立在这种模式之上,以解决上述实时问题。如果你有兴趣请参加一些教程,春天还有更多的usfull功能可供使用。