• Spring(一)简述(转载)


    原文出自:http://www.cnblogs.com/liunanjava/p/4396794.html

    一、Spring简述

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使 用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然 而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核 心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

    二、Spring体系结构

     

    2.1、体系结构介绍

    • Spring Core:管理bean与bean之间的依赖
    • Spring Web:提供Web应用开发的支持
    • Spring DAO:支持包括一致的异常处理和编程方式
    • Spring BeanFactory:功能加强的一个子接口
    • Spring MVC:针对Web应用MVC思想实现
    • Spring ORM:用于与流行ORM框架整合
    • Spring AOP:AOP面象切面编程,提供与OP联盟兼容的编号实现

    以上大部分都可以 单独使用

    2.2、各部分

     

    三、Spring设计理念

    四、如何获取Spring

    下载地址

     http://repo.spring.io/libs-release-local/org/springframework/spring/

    五、使用Spring实现Hello Spring

     添加包

    建立类

    复制代码
    package com.pb.demo;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class HelloSpring {
        private String str;
    
        public void print() {
            System.out.println("Hello!    " + this.getStr());
        }
    
        public static void main(String[] args) {
            // 创建ApplicationContext上下文件对象
            ApplicationContext context = new ClassPathXmlApplicationContext(
                    "applicationContext.xml");
            HelloSpring hello=(HelloSpring) context.getBean("hellospring");
            hello.print();
    
        }
    
        public String getStr() {
            return str;
        }
    
        public void setStr(String str) {
            this.str = str;
        }
    
    }
    复制代码

    建立applicationContext.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:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="hellospring" class="com.pb.demo.HelloSpring">
    <property name="str" value="Spring"></property>
    </bean>
    
    </beans>
    复制代码

     另一个

    复制代码
    package com.pb.demo;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class SpringDemo1 {
        private String name;
        private String job;
    
        public void print() {
            System.out.println("姓名: " + this.getName() + " 	职业: " + this.getJob());
    
        }
    
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext(
                    "applicationContext.xml");
            SpringDemo1 demo=(SpringDemo1)context.getBean("springdemo");
            demo.print();
    
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getJob() {
            return job;
        }
    
        public void setJob(String job) {
            this.job = job;
        }
    
    }
    复制代码
    复制代码
    <?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:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="hellospring" class="com.pb.demo.HelloSpring">
    <property name="str" value="Spring"></property>
    </bean>
    <bean id="springdemo" class="com.pb.demo.SpringDemo1">
    <property name="name" value="林冲"/>
    <property name="job"  value="80万禁军教头!"/>
    </bean>
    </beans>
    复制代码

     六、Spring对单态和工厂模式的支持

    6.1、工厂模式

    复制代码
    package com.pb.lnk;
    /**
     * 墨盒接口
     * @author Administrator
     *
     */
    public interface Lnk {
    
        public void getColor();
    }
    复制代码

    实现类

    复制代码
    package com.pb.lnk;
    /**
     * 彩色墨盒
     * @author Administrator
     *
     */
    public class Color implements Lnk {
    
        @Override
        public void getColor() {
            System.out.println("=======使用彩色墨盒打印!========");
    
        }
    
    }
    
    
    package com.pb.lnk;
    /**
     * 灰色墨盒
     * @author Administrator
     *
     */
    public class Grey implements Lnk {
    
        @Override
        public void getColor() {
            System.out.println("--------使用灰色墨盒打印!---------");
    
        }
    
    }
    复制代码

    测试类

    复制代码
    package com.pb.lnk;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * 墨盒测试类
     * 
     * @author Administrator
     * 
     */
    public class LnkTest {
    
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext(
                    "applicationContext.xml");
            
            Lnk k=null;
            k=(Lnk) context.getBean("color");
            k.getColor();
            k=(Lnk) context.getBean("grey");
            k.getColor();
    
        }
    
    }
    复制代码

    applicationContext.xml

    <bean id="color" class="com.pb.lnk.Color"></bean>
    <bean id="grey" class="com.pb.lnk.Grey"></bean>

    6.2、单态模式支持

    复制代码
    package com.pb.lnk;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * 单态模式(单实例模式)
     * @author Administrator
     *
     */
    public class LnkTest2 {
    
        public static void main(String[] args) {
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
            Lnk lnk1=null;
            Lnk lnk2=null;
            lnk1=(Lnk)context.getBean("color");
            lnk2=(Lnk)context.getBean("color");
            System.out.println(lnk1==lnk2);
            //结果是true表示2个是同一个对象
        }
    
    }
    复制代码

    七、Spring核心机制

  • 相关阅读:
    多进程或多线程实现并发
    linux服务器配置pyspider出现Could not run curl-config 的解决方式
    js的逆向解析
    修改linux终端命令行各字体颜色
    利用Centos服务器来搭建自己的splash,不再被安装的各种环境繁琐而担忧
    配置 Docker 加速器:适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1
    一分30秒 kali 开机显示 a start job is running for dev-disk 处理
    虚拟机Ubuntu16.04无法进入图形界面 The system is running in low-graphics mode
    vmware ubuntu硬盘空间不够用,空间扩展
    pip错误-failed to create process/fatal error in launcher
  • 原文地址:https://www.cnblogs.com/vincent-blog/p/4414376.html
Copyright © 2020-2023  润新知