spring

从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring就是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
下面从整体上认识一下Spring的主要特征:
*轻量:从大小与开销两方面而言Spring都是轻量的。此外,Spring是非侵入式的:使用Spring,我们的类还是pojo类,完全不用继承和实现Spring的类和接口等。
也就是说,使用Spring的应用中的对象不依赖于Spring的特定类。
*IoC:Spring通过控制反转技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。可以认为IoC与JNDI相反--不是我们自己控制对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它,这就是DI--依赖注入。
基本上就是对象不用自己动手管理和创建。完全由容器管理,我们只管用就行。
*AOP:Spring提供了面向切面的编程支持,AOP将与程序业务无关的内容分离提取,应用对象只实现它们应该做的--完成业务逻辑--仅此而已。它们并不负责其它的系统级关注点,例如日志或事务支持。
AOP将与业务无关的逻辑横切进真正的逻辑中。
*框架:Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),而用户就有更多的时间和精力去开发应用逻辑。
所有Spring的这些特征都能帮助我们够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
*借助Spring,荣国依赖注入,AOP应用,面向接口编程,来降低业务组件之间的耦合度,增强系统的扩展性。
* 让已有的技术和框架更加易用。
*利用其对hibernate的SessionFactory、事务管理的封装,更简洁的应用hibernate.
*Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
*利用AOP思想,集中处理业务逻辑,减少重复代码,构建优雅的解决方案。
*低侵入式设计,代码污染极低。
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的"一站式"选择,并贯穿表现层、业务层及持久层。
虽然Spring可以一站式解决整个项目问题,但是Spring并不想取代那些已有的框架,而是与它们无缝地整合。Spring可以降低各种框架的使用难度,他提供了对各种优秀框架(如Struts、Hibernate、Hessian、Quartz等)的直接支持。
使用Spring的主要目的是使J2EE易用和促进好的编程习惯,Spring的目标就是让已有的技术更加易用。
所以Spring的一个重要思想就是整合和兼容。
怎么用?
首先去官网下载spring然后安装到软件里,然后去建一个实体类测试。spring玩的都是配置。

package com.zking.entity;

public class Shui {
   
    private Pinpai pinpai;
   
    private Rongliang rongliang;
 
    private Changdi changdi;
    public Shui() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Shui(Pinpai pinpai, Rongliang rongliang, Changdi changdi) {
        super();
        this.pinpai = pinpai;
        this.rongliang = rongliang;
        this.changdi = changdi;
    }
    public Pinpai getPinpai() {
        return pinpai;
    }
    public void setPinpai(Pinpai pinpai) {
        this.pinpai = pinpai;
    }
    public Rongliang getRongliang() {
        return rongliang;
    }
    public void setRongliang(Rongliang rongliang) {
        this.rongliang = rongliang;
    }
    public Changdi getChangdi() {
        return changdi;
    }
    public void setChangdi(Changdi changdi) {
        this.changdi = changdi;
    }
    @Override
    public String toString() {
        return "Shui [pinpai=" + pinpai.GetName() + ", rongliang=" + rongliang.Getsize() + ", changdi=" + changdi.Getchangdi() + "]";
    }
    
    
}

package com.zking.entity;

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

public class Testspring01 {
    @Test
    public void test1(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("test.xml");
        Shui shui=(Shui) ac.getBean("phone");
        System.out.println(shui);
    }
    
    
    
}


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/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.xsd">
        <bean id="phone" class="com.zking.entity.Shui">
            <property name="pinpai" ref="baisuishan"></property>
            <property name="rongliang" ref="yigeren"></property>
            <property name="changdi" ref="zhejiang"></property>
        </bean>
        
        
        <bean id="baisuishan" class="com.zking.entity.Baisuishan"></bean>
        <bean id="yinbao" class="com.zking.entity.Yinbao"></bean>
        <bean id="yigeren" class="com.zking.entity.Yigeren"></bean>
        <bean id="liageren" class="com.zking.entity.Liageren"></bean>
        <bean id="shenz.java" class="com.zking.entity.Shenz"></bean>
        <bean id="zhejiang" class="com.zking.entity.Zhejiang"></bean>
</beans>

所有的bean 配的都是类

框架玩的就是配置,多练习就行了.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值