我是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框架。 可能是一个愚蠢的问题,但如果可能的话,尽量以详细的方式向我展示。
答案 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功能可供使用。