• 搭建SSM框架之Spring


      作为一枚大四准备毕业的学生,最重要的事便是毕业设计,前些日子刚刚拿到毕设题目:“3D网络图:面向网络结构数据的可视化软件设计”,(⊙o⊙)…,怎么说哪,看到题目就是一头雾水(前几届不都是学生选课系统,学生教务管理系统吗-_-||,说好的套路那),望着题目,看看在公司里要学的PeopleSoft,我去,毫无关系好吗。在学校学了两年JAVA,校外实习交了一万多学习了JavaEE,找个工作去干了PeopleSoft-_-||,毕设又是可视化设计,唉,真是世事多变,人生无常啊。

      好了,吐槽归吐槽,为了吃饭,为了毕业什么都得慢慢来。仔细了解了一下题目:“本题目要求学生使用webGL技术开发一个用于数据可视化呈现的web应用软件。网络结构数据的可视化表现方式一直是数据可视化领域研究的重点。采用webGL技术,可以使用现代浏览器直接在网页上呈现3D效果,为网络结构数据可视化和交互设计提供了新的可能。”突然想起在学校的日子里对那些网页上呈现3D效果代码的着迷(也就在那时学了JS,甚至决定了以后校外实习的选择),回想起那时的时光,看看现在做的PeopleSoft,理想和现实的差距还真是大o(╥﹏╥)o,大概熟悉了一下题目后和老师聊了聊,原来这次毕设和我的理想是那么的接近,那就开始做,而且要好好做,人不止是为了现实而活着,至少要向自己的理想迈出几步。

      首先老师让先搭起一套框架,说实话不管是实习还是在大学,框架都没有深入理解过(实习时刚学到JS,就找到工作,也没想到会做PeopleSoft),那就从头开始,慢慢来吧!

      翻开好久不动的JAVA资料,打开好久没看的JAVA视频,学着学着突然有种想哭的冲动(不要问我为什么,就是很难过),以下便是我学习Spring的过程,以后会一直更新,直到把毕设做完。

      首先我了解到Spring是一个社区,也是一个很大的项目,其中包含了很多子项目,我主要用到的是其中的核心项目Spring Framework。

      Spring-framework 框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块。这些模块分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation和测试部分,其中我主要去学习的是Core Container和AOP。

      

     一、 其中Spring中有两个重要的概念:

    IOC:Inversion of Control 控制反转
    spring核心容器也可以称为IOC容器,该容器主要负责管理各种对象的声明周期(对象的创建、初始化、销毁等)
    IOC容器并没有实现更多的功能,但它的存在使我们不需要很多代码、不需要考虑对象间复杂的耦合关系就能从IOC容器中获取合适的对象,而且提供了各种对象的可靠的管理,极大地降低了开发的复杂性。

    总结:
    1.IOC意味着将你设计好的类交给了spring容器去控制,而不是在类的内部自己进行控制。
    2.有IOC容器之后,剩下的工作只是在IOC容器中堆积木
    3.之前项目中对象和对象之间的关系是直接写死在代码中的,而使用了IOC容器后则是在代码中并没有写对象和对象是什么关系,而是把这种关系的建立交给了IOC容器去做,并且是在代码运行的时候动态建立起来(我们可以通过配置文件进行任意改变)
    4.IOC其实就是一种将调用者与被调用者分离的思想。

    DI:Dependency Injection 依赖注入
    DI的概念的提出是用来代替IOC的,表示让调用类对某一接口实现类的依赖关系由容器注入,以移除调用类对某一接口实现类的依赖。(思考servlet和service层接口以及service层接口实现类这三者的关系)
    依赖注入 这个名词显然比 控制反转 更直接明了,并且易于理解。

    二、对此有了了解后,下载Spring:

    http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/spring-framework-3.2.4.RELEASE-dist.zip
    直接粘到地址栏或者下载工具里,每次有更新只要改版本号就可以。

    三、然后就是Spring的配置流程及需要理解的内容:

    Spring IOC容器核心api(容器将来会是一个对象)
    BeanFactory接口
    BeanFactory是Spring中IOC容器的核心接口,主要用于处理Bean的初始化和配置,建立对象间的依赖关系

    接口中主要方法如下:
    //根据指定名称返回一个Bean实例
    Object getBean(String name)

    //判断名称为name的Bean是否是原型,即是否总是返回一个新实例(非单例)
    boolean isPrototype(String name)

    //判断名称为name的Bean是否是单例
    boolean isSingleton(String name)

    //判断容器中是否包含给定名称的Bean实例
    boolean containsBean(String name)

    //如果名称为name的Bean有别名则返回所以别名
    String[] getAliases(String name)

    ApplicationContext接口
    该接口继承于BeanFactory,增强了BeanFactory,增加了事务处理AOP,国际化,事件传递等功能

    所以在代码中我们一般会使用ApplicationContext接口,以及这个接口相应的实现类来创建spring的容器对象
    例如:
    String path = "com/briup/ioc/set/set.xml";
    ApplicationContext container =
    new ClassPathXmlApplicationContext(path);

    Student s = (Student)container.getBean("student");

     四、配置文件
    Spring通过读取配置文件中的数据来对项目各个对象进行实例化,配置以及组装,通常使用XML文件来作为配置文件

    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"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    </beans>

    注意事项:
    1.这个文件的头部声明可以在下载的spring文档中的示例找到
    2.这里面用到了俩个schema文件(.xsd文件),分别是spring-beans-3.2.xsd和spring-context-3.2.xsd,它们也可以在下载的spring文档中找到
    3.在Eclipse中把xml文件和schema文件关联后,xml中就可以有标签代码的提示了(注意关联时别配置错了)
    4.spring框架是模块化的,之后使用其他模块的时候,还可以在该xml的根元素中继续引用其他模块中相应的schema文件,然后就可以使用引入新模块中的标签代码了

    测试例子:

    set方式注入(必须依靠set方法):

    导入jar包:

    创建两个测试类,例如Student和Teacher,其中Teacher类中包含Student。

    编写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"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.2.xsd">
        
        <bean name="stu" class="com.briup.bean.Student">
        	<property name="id" value="1"></property>
        	<property name="name" value="tom"></property>
        	<property name="age" value="20"></property>
        </bean>
        
        <bean name="teacher" class="com.briup.bean.Teacher">
        	<property name="id" value="1"></property>
        	<property name="name" value="zhangsan"></property>
        	<property name="student" ref="stu"></property>
        </bean>
    

      写测试方法:

    public void ioc_set() {
    
    		try {
    			String[] path = {"com/briup/ioc/set/set.xml"};
    			ApplicationContext container = 
    					new ClassPathXmlApplicationContext(path);
    			
    			Teacher t = (Teacher)container.getBean("teacher");
    			
    			System.out.println(t);
    			System.out.println(t.getId());
    			System.out.println(t.getName());
    			System.out.println(t.getStudent());
    			System.out.println("-------------");
    			System.out.println(t.getStudent().getId());
    			System.out.println(t.getStudent().getName());
    			System.out.println(t.getStudent().getAge());
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    

      这就是一个Spring实现控制反转,依赖注入的例子。

      总结(Spring):

    1.降低耦合性(在一个类中运行时引入其他类,而不是直接new对象)
    2.去除一些方法中重复代码(例如日志文件,权限控制,事务处理(开事务,提交事务,异常事务处理) //需要这个代码,但这个代码又不能直接写到这里)
    spring可以在运行期间把代码进行动态结合
    3.管理对象的生命周期
    4.spring核心容器中放入对象,这些对象被称为bean(可重复使用的组件)
    5.IOC:反转,主动变被动
    DI:依赖(依赖的解释:例如web层依赖service层,service层依赖dao层)注入,DI的概念的提出是用来代替IOC的

  • 相关阅读:
    Elasticsearch 分词
    Elasticsearch:文档乐观锁控制 if_seq_no与if_primary_term
    调用javaAPI访问hive
    sqoop笔记
    hive学习
    添加用户到sudo组
    HTTP协议用的TCP但是只建立单向连接
    Hadoop基本操作
    Hadoop原理介绍
    sed用法
  • 原文地址:https://www.cnblogs.com/wsyblog/p/8157488.html
Copyright © 2020-2023  润新知