zoukankan      html  css  js  c++  java
  • Spring 核心概念以及入门教程

    初始Spring

          在学习Spring之前我们首先要了解一下企业级应用。企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用

    这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集,数据规模大,用户数量多,有较强的安全性考虑和较高的性能要求

          当代的企业级应用绝不可能是一个个独立系统。在企业中,一般都会部署多个进行交互的应用,同时这些应用又都有可能与其他企

    业的相关应用连接。从而构成一个结构复杂的,跨越Internet的分布式企业应用集群。

          此外,作为企业级应用,不但要有强大的功能,还要能够满足未来业务需求的变化,易于扩展和维护。Spring的作者是Rod Johnson

    2002年他编写了<<Expert One-on-One Java EE设计与开发>>一书。在书中,他对传统的Java EE 技术日益臃肿和低效提出了质疑于是

    提出Interface 21,也就是Spring框架的雏形 。他提出技术要以实用为准的主张。在2003年2月Spring框架正式成为一个开源的项目并发布

    于SourceForge中。

          Spring致力于Java EE 应用的各种解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,Spring

    贯穿表现层,业务层,持久层,然而Spring 并不想取代那些现有的框架,而是以高度的开放性与它们无缝整合。

    Spring的绿草丛”

          Spring确实给人一种格外清新,爽朗的感觉,仿佛微雨后绿草丛,讨人喜欢。Spring是一个轻量级框架,它

    大大简化了Java企业级开发,提供了强大,稳定的功能,又没有带来额外的负担,让人们在使用它做每一件事情的

    时候都有得体和优雅的感觉。Spring有两个主要目标:一是让现有技术更易于使用,二是促进良好的编程习惯

          Spring是一个全面的解决方案,但它坚持一个原则:不重新发明轮子。已经有较好解决方案的领域Spring

    绝不做重复性的实现。例如对象持久化和ORM,Spring只是对现有的JDBC,Hibernate等技术提供支持,使之更易用

    而不是重新做一个实现。

          Spring框架由大约20个功能模块组成。这些模块被分组成6个部分,分别是Core Container,DataAccess/Integration

    Web,AOP(Aspect Oriented Programming),Instrumentation及Test。

          Spring Core是框架最基础部分,提供了IoC特性。Spring Context为企业级开发提供了便利和集成的工具。Spring AOP是

    基于Spring Core 的符合规范的面向切面编程的实现。Spring JDBC 提供了JDBC的抽象层,简化了JDBC编码,同时是代码更

    健壮。Spring ORM部分对Hibernate等ORM框架提供了支持。Spring Web 为Spring 在Web应用程序中的使用提供了支持。

    Spring IoC

    理解“控制反转”

         控制反转(Inversion  of Control, IoC)也被称为依赖注入(Dependency Injection,DI),是面向对象编程中的一种设计理

    念,用来减低程序代码之间的耦合度。“依赖”在代码中一般指通过局部变量,方法参数,返回值等建立的对于其他对象的调用关系

    。例如,在A类的方法中,实例化了B类的对象并调用其方法以完成特定的功能我们就可说A类依赖于B类。

    ***************************************************************************************************************************

    说了这么多的理论知识下面我们就来实现Spring的第一个入门案例  Hello ,Spring!

    使用的开发工具为MyEclipse。我们需要引入的jar包有如下:

    commons-logging-1.1.1.jar

    log4j-1.2.17.jar(为了方便观察Bean实例化过程,我们采用log4j作为日志输出)

    org.springframework.asm-3.1.1.RELEASE.jar

    org.springframework.bean-3.1.1.RELEASE.jar

    org.springframework.context-3.1.1.RELEASE.jar

    org.springframework.core-3.1.1.RELEASE.jar

    org.springframework.expression-3.1.1.RELEASE.jar

    接下来我们编写HelloSpring类(代码如下:)

    public class HelloSpring{
    
    //定义who属性,该属性的值通过Spring框架进行设置
    private String who=null;
    /**
     *定义一个打印的方法
    */
    
    public void print(){
       System.out.println("Hello,"+this.getwho()+"!");
    }
    //获得Who
    public String getWho(){
      
      return who;
    
     }
    //设置Who
        public void setWho(String who){
    
            this.who=who;
        }
    }

    然后我们编写Spring配置文件。在src目录下创建applicationContextxml文件,创建HelloSpring类的实例为Who注入属性值。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/scheam/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.1.xsd">
    <bean id="helloSpring" class="cn.biz.HelloSpring">
    <!--property 元素用来为实例属性赋值,此处实际调用setwho()方法-->                
    
    <property name="who ">
    <!--将字符串“Spring”赋值给who属性-->
    <value>Spring</value>
    </property>
    </bean>
    </beans>

    下面我们在HelloSpring类中添加main()方法测试即可

    public class HelloSpring{
    //省略上面出现过的代码
      public static void main  (String [] args){
    
    //通过ClassPathXmlApplicationContext实例化Spring的上下文
    
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    //通过getBean()方法,根据ID来获取Bean实例
    HelloSpring helloSpring =(HelloSpring) context.getBean("helloSpring");
    //执行print()方法
    helloSpring.print();
       }
    
    }

    这样入门案例就完成了,运行在控制台看到helloSpring!即可。

     如果你掌握了Spring入门案例 并且觉得对你有帮助 那么请期待我接下来关于Spring后续的内容吧

  • 相关阅读:
    生活小记--工作一年后的菜鸡
    git使用笔记-git项目的建立及配置、创建子分支及独立分支、分支重命名
    React-leaflet在ant-design pro中的基本使用
    ionic新入坑-环境搭建+新建项目+打开低版本项目处理
    canvas绘制圆心扇形可组成颜色随机的七色小花
    取所选当前时间前十二个月的数据
    win10被微软流氓更新后编译基于visual Studio的web项目报[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围
    浅析__proto__、prototype
    JavaScript数据类型
    异步与多线程实现不阻塞区别
  • 原文地址:https://www.cnblogs.com/System-out-println/p/5881297.html
Copyright © 2011-2022 走看看