Spring基本框架

1.Spring基本框架的概念

 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义创建、配置和管理bean的方式。组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现,一个支持DI/IOC和AOP开源的容器框架。

2.特点

DI依赖注入:组件以特定方式接收来自容器的资源注入

IOC控制反转:反转资源获取的方向

AOP面向切面编程

3.使用

(1)定义容器

(2)得到容器

具体的代码实现:

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

    <bean id="car1" class="com.hanqi.test.Car">
        <property name="carNumber" value="鲁C12345"></property>
    </bean>
        <bean id="car" class="com.hanqi.test.Car">
        <property name="carNumber" value="鲁C14345"></property>
    </bean>
    <bean id="p1" class="com.hanqi.test.Person">
        <constructor-arg name="name" value="张三"></constructor-arg>
        <constructor-arg name="age" value="30"></constructor-arg>
        <property name="car" ref="car1"></property>
        <property name="bankCards">
            <list>
            <value>123456</value>
            <value>456798</value>
            <value>233339</value>
            </list>
        </property>
    </bean>
    <util:list id="bankCards">
        <value>12344</value>
        <value>13444</value>
        <value>15344</value>
    </util:list>
    <!-- 使用p标签 -->
    <bean id="p2" class="com.hanqi.test.Person"
    p:name="李四" p:age="20" p:car-ref="car1" p:bankCards-ref="bankCards"></bean>
    <!-- 自动装配
    <bean id="p3" class="com.hanqi.test.Person" autowire="byType"></bean>-->
    <!-- 自动装配 -->
    <bean id="p4" class="com.hanqi.test.Person" autowire="byName" p:name="王五" p:age="30"></bean>
    <bean id="p5" parent="p1" p:name="张小三" p:age="18"></bean>
    <!-- 定义模板,只能被继承,不能被外部使用 -->
    <bean id="m1" class="com.hanqi.test.Person"  abstract="true"
    p:name="默认名称" p:age="20" p:car-ref="car1" p:bankCards-ref="bankCards"></bean>
    <!-- 默认是单例的 -->
    <bean id="p6" scope="prototype" parent="m1" p:name="王芳" p:age="38"></bean>
    <!-- 加载外部配置文件 -->
    <context:property-placeholder location="classpath:person.properties"/>

    <bean id="p7" class="com.hanqi.test.Person" p:name="${name}" p:age="${age}"></bean>
</beans>

定义的Person类

package com.hanqi.test;

import java.util.List; 

public class Person {

    private String name;
    private int age;

    private List<String> bankCards;
    private Car car;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public List<String> getBankCards() {
        return bankCards;
    }
    public void setBankCards(List<String> bankCards) {
        this.bankCards = bankCards;
    }
    public Car getCar() {
        return car;
    }
    public void setCar(Car car) {
        this.car = car;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", bankCards=" + bankCards + ", car=" + car + "]";
    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
        System.out.println("带参数的构造方法Person被实例化了");
    }
    public Person() {
        super();
        System.out.println("不带参数的构造方法Person被实例化了");
    }

}

定义的Car类

package com.hanqi.test;

public class Car {

        private String carNumber;

        public String getCarNumber() {
            return carNumber;
        }

        public void setCarNumber(String carNumber) {
            this.carNumber = carNumber;
        }

        @Override
        public String toString() {
            return "Car [carNumber=" + carNumber + "]";
        }

        public Car() {
            super();

        }

        public Car(String carNumber) {
            super();
            this.carNumber = carNumber;
        }

}

测试类

package com.hanqi.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestPerson {

    public static void main(String[] args)
    {
        // 1 加载容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

        // 2 从容器中获取对象
        Person p1 =(Person)ac.getBean("p1");
        System.out.println(p1);

        Person p2 =(Person)ac.getBean("p2");
        System.out.println(p2);

//        Person p3 =(Person)ac.getBean("p3");
//        System.out.println(p3);

        Person p4 =(Person)ac.getBean("p4");
        System.out.println(p4);
        // 继承的对象
        Person p5 =(Person)ac.getBean("p5");
        System.out.println(p5);

        Person p6 =(Person)ac.getBean("p6");
        System.out.println(p6);

        Person p6_1 =(Person)ac.getBean("p6");
        System.out.println(p6_1);
        if(p6==p6_1)
        {
            System.out.println("p6 == p6_1");
        }
        else
        {
            System.out.println("p6 !=p6_1");
        }
        // 模板不能被调用
//        Person m1 =(Person)ac.getBean("m1");
//        System.out.println(m1);

        Person p7 =(Person)ac.getBean("p7");
        System.out.println(p7);
    }
}
时间: 2024-12-17 12:41:05

Spring基本框架的相关文章

搭建基于spring MVC框架 + RESTful架构风格技术总结

实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的访问. 用RESTful架构的创建步骤: 1.创建一个全新的Web工程 2.导包,导入所需要的所有第三方jar包.(springMVC+Hibernate的基本包是必须的) 3.作配置,针对不同的项目需求和不同的搭建设计,开发人员可以按照自己的编码风格来设计符合项目开发具体 应该用多少篇配置文件.但是这几篇配置文件是必不可少的: 3-1.web.xml配置文件:最基本的配

Spring MVC 框架搭建及详解

一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.commons-logging.jar.cglib-nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar.hibernate-jpa-2.0-api-1.0.1.Final.jar.antlr-2.7.6.jar.commons-collections-3

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE

Spring.net(一)----Spring.NET框架简介及模块说明

简介:    Spring.NET框架包括很多功能,Spring.NET 1.0包括完整的IoC容器和AOP类库.1.1版加入Web.ORM和数据模块.Spring.NET的下载包中并不包含与其它类库(如NHibernate,TIBCO EMS,Anthem,和IIOP.NET)集成的模块,如果需要您可以单独下载. Spring Framework天生丽质,因为其先进的架构和对一系列前沿开发思想的集成,使它从一产生就深得开发者欢迎,它将设计模式运用到了炉火纯青的地方,它的幽雅和魅力征服了许多JA

(Spring Boot框架)快速入门

Spring Boot 系列文章推荐 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 今天介绍一下如何利用Spring MVC快速的搭建一个简单的web应用. 环境准备 一个称手的文本编辑器(例如Vim.Emacs.Sublime Text)或者IDE(Eclipse.Idea Intellij) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea Int

Struts2,Spring,Hibernate框架的优缺点

Struts2,Spring,Hibernate框架的优缺点 Struts2框架(MVC框架)的优点如下: 1)  实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现:        2)  丰富的标签库,大大提高了开发的效率:        3) Struts2提供丰富的拦截器实现        3) 通过配置文件,就可以掌握整个系统各个部分之间的关系:        4) 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理: Spring框架的优点如下: 1) 

Spring MVC 框架搭建及具体解释

如今主流的Web MVC框架除了Struts这个主力 外.其次就是Spring MVC了,因此这也是作为一名程序猿需要掌握的主流框架.框架选择多了.应对多变的需求和业务时,可实行的方案自然就多了. 只是要想灵活运用Spring MVC来应对大多数的Web开发,就必需要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.com

使用spring等框架的web程序在Tomcat下的启动顺序及思路理清

大牛请绕过,此文仅针对自己小白水平,对web程序的启动流程做个清晰的回顾. 一.使用spring等框架的web程序在Tomcat下的启动流程 1)Tomcat是根据web.xml来启动的.首先到web.xml 2)web.xml中负责启动spring和spring mvc.对应的启动配置文件分别是 启动spring mvc,并进行所有资源路径映射 <servlet> <servlet-name>springMVC</servlet-name> <servlet-c

spring+mybatis 框架搭建

注意<!-- 中间的字要保持与左右留出一个空格,否则会报错说出现两杠线 --> 1.导入jar包 aopalliance-1.0.jarasm-3.3.1.jarcglib-2.2.2.jarcom.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarcommons-logging-1.1.1.jarjavassist-3.17.1-GA.jarjunit-4.9.jarlog4j-1.2.17.jarmybatis-3.0.3.jarmybati