美文网首页JavaJava架构技术进阶
Java Spring入门,宅家的你,该学习啦!

Java Spring入门,宅家的你,该学习啦!

作者: 4d11ff5df74e | 来源:发表于2020-04-09 15:09 被阅读0次


    一、Spring是什么?

    Spring是于2003 年兴起的,它是一个开源的轻量级的Java开发框架,它能解决企业应用开发的复杂性,简化应用程序的开发。Spring使用基本的JavaBean来完成以前,只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IOC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架,给予了 Java 程序员更高的自由度。

    二、Spring的优点

    1)方便解耦,简化开发

    Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

    2)方便集成各种优秀框架

    Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。

    3)降低 Java EE API 的使用难度

    Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

    4)方便程序的测试

    Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。

    5)AOP 编程的支持

    Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

    6)声明式事务的支持

    只需要通过配置就可以完成对事务的管理,而无须手动编程。

    三、IDE建立Spring项目

    idea建立spring项目相当方便 , 可以自动生成spring配置文件 , 和自动导入Spring所需jar包。

    File—>new—>project—>Spring

    点击Next,等待jar包导入,成功生成javaSpring工程。该工程与普通java工程无异 , 只是多了一个spring-config.xml文件,这个文件是干嘛用的,稍后在进行讲解。

    既然Spring是框架那么接下来我将简单说明该如何使用它,Spring的核心是AOP(面向切面编程)和IOC(依赖注入)是Spring的核心,那么AOP好IOC到底是什么呢?我们先看下面的例子:

    在刚刚创建的工程中新建两个类:

    Server.class

    Main.class

    Server.class就不用说了,我们重点看Main.class,如果你没有重来没有接触过Spring,你肯定会感到困惑,在主函数main中我并没有创建(new)Server的实例,却用了什么奇怪的方法生成了Server实例,并且还调用了Server的putName()方法。putName()方法是输出我们设置的名字,应该先采用Server的setName()方法设置才对啊,按理说这样是不会有输出的。是这样吗?那么我们先运行一下看看吧。

    运行结果:


    结果输出了一个“山东科技大学”,当然这个输出的字符串是我自己设置的,那么在那设置呢,怎么设置呢?别急,让我慢慢道来。

    还记得工程中的spring-config.xml文件么?我们就是在这里面对Name进行设置的。

    打开spring-config.xml文件看看,下面是我的spring-config.xml:

    是不是和我的不一样,我的多了一部分内容,那么请加上它在运行看看吧?

    <beanid="example_one"class="Server"><propertyname="name"value="山东科技大学"></property></bean>

    是不是运行成功了!

    那么,上面所加的这段代码是什么呢。你可以简单的理解为,让系统生成一个静态的全局的Server对象,并且把这个对象的成员name的值设置为“山东科技大学”。当然这个对象一必须要拥有一个名字,否者我们找不到它,这个静态对象的名字就叫做“example_one”。我这么一说你就能明白上面的id , name , value这几个属性了吧。

    我们再回到Main类的main函数中:

    ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

    这行代码的意思是获取Spring-config.xml的上下文,Spring是根据Spring-config.xml的配置来实现AOP和IOC的,所以主程序要先获取到Spring-config.xml文件才能知道下一步的动作。(好了,我知道这么说你们不明白,就好像你要吃苹果,你得先拿到苹果吧,这行代码就是获得苹果)

    接下来从苹果中,啊不,从Spring-config.xml文件中,找到生成的静态Server对象:

    Server hello = (Server)context.getBean("example_one");

    所以说,Spring工程在运行主程序前,会先审查Spring-config.xml的内容,根据他的配置做出动作,后运行主程序main。

    那么问题又来了:为什么要使用这种方式来生成对象,而不用直接new一个呢?

    首先new一个对象,JVM要经过这样的初始化顺序:父类静态块>子类静态块>父类属性>父类构造器>子类属性>子类构造器,着一系列的工作会消耗大量的内存和cpu。

    然而Spring实现了对象池(类似于java的常量池),一些对象创建和使用完毕后不会被销毁,下次需要这个对象,不new,直接重池中取出来用。这种方法既节省时间,cpu占用,还省内存,对于大型服务器来说是相当必要的。

    原文链接:https://blog.csdn.net/HUXINY/article/details/80076561

    相关文章

      网友评论

        本文标题:Java Spring入门,宅家的你,该学习啦!

        本文链接:https://www.haomeiwen.com/subject/nlscmhtx.html