1.1、      耦合性和控制反转:

对象之间的耦合性就是对象之间的依赖性。对象之间的耦合越高,维护成本越高。因此,对象的设计应使类和构件之间的耦合最小。

例:

public interface ICustomerDao{      //接口

public boolean getCustomerByAccount();

}

public class CustomerDao implements ICustomerDao{

/*实现代码*/

}

public class BeanFactory{         //工厂类

public static Object getBean(String className){

return Class.forName(className).newInstance();         //反射机制

}

}

Public class LoginAction{

public void execute(){

ICustomerDao icdao =

(ICustomerDao)BeanFactory.getBean(“CustomerDao”);

boolean b = icdao.getCustomerByAccount();

}

}

控制反转的原理:

这种设计方法有一个好处是,BeanFactory类的通用性很强,可以将其框架化。因此,框架化之后,对象的生成由框架参考配置文件进行,和具体实现类的源码无关,将对象生成的控制权由修改不方便的源代码转变为修改相对方便的配置文件与几乎不进行修改的框架进行,这就是控制反转(IOC)的原理。

1.2、      Spring框架简介:

IOC思想给降低对象间的耦合性带来了巨大的好处,但是,IOC毕竟只是一种思想,不同的程序员写出的基于IOC思想的应用,风格可能不一样,影响程序的标准化。因此,有必要对IOC来进行标准化。

Spring就是这样的一个框架,在使用的过程中,受到广泛的承认。因此,IOC是Spring框架的基础,或者说,Spring是为了规范IOC开发而发布的一个框架。

2、Spring框架的基本使用方法:

2.1、导入Spring框架:

(1)、新建一个Java Project;

(2)、MyEclipse —> Project Capabilities —> Add Spring Capabilities:

2.2、编写被调用方及其接口:

(1)、

package idao;

publicinterface ICustomerDao {

publicboolean getCustomerByAccount();

}

(2)、

package dao;

import idao.ICustomerDao;

publicclass CustomerDao implements ICustomerDao{

publicboolean getCustomerByAccount(){

System.out.println("CustomerDao查询数据库");

returntrue;

}

}

2.3、编写Spring配置文件:

Spring的配置文件为applicationContext.xml,一般不要修改名称,并放在src目录下,该文件的主要目的是配置需要实例化的对象:

<?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="icdao" class="dao.CustomerDao"></bean>

</beans>

2.4、编写调用方:

本例中,调用方为LoginAction,在Action中,可以调用Spring框架,让其根据配置文件实例化相应的对象:

package action;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

import idao.ICustomerDao;

publicclass LoginAction {

publicvoid execute(){

ApplicationContext context =

new FileSystemXmlApplicationContext("/src/applicationContext.xml");

ICustomerDao icdao = (ICustomerDao)context.getBean("icdao");

icdao.getCustomerByAccount();

}

}

然后,编写一个测试文件,来测试前面的代码:

package main;

import action.LoginAction;

publicclass Main {

publicstaticvoid main(String[] args) {

new LoginAction().execute();

}

}

3、依赖注入:

Spring配置文件的核心体现在:

<bean id=”icdao” class=”dao.CustomerDao”></bean>

表示让框架实例化一个dao.CustomerDao对象,名为icdao,这就是控制反转原理的实现。但是,在Spring中,还有一个重要的功能,那就是依赖注入。

依赖注入,通俗地说,就是可以由配置文件决定向某个对象中存入值。

3.1、属性注入:

(1)、如果属性是简单数据,属性注入格式如下:

<property name=”属性名”>

<value>值<value>

</property>

(2)、如果是一个对象,则属性注入格式如下:

<property name=”属性名”>

<ref local=”对象名” />

</property>

3.2、构造函数注入:

(1)、如果属性是简单数据,则构造函数注入格式如下:

<constructor-arg index=”参数序号” type=”参数类型”>

<value>参数的值</value>

</constructor>

(2)、如果是一个对象,构造函数注入的格式如下:

<constructor-arg index=”参数序号” type=”参数类型” ref=”对象名”>

</constructor-arg>

注意:属性注入的特点是不需要知道属性类型,但必须知道属性名称;

构造函数注入的特点是不需要知道参数名称,但必须知道参数的序号和类型。

4、其他问题

4.1、Bean的初始和消亡函数:

在Spring配置文件的bean标签中,可以设置初始化函数和消亡函数:

<bean id=”testInit” class=”test.TestInit”

init-method=”init”

destroy-method=”destroy” >

</bean>

表示实例化test.TestInit的对象时,构造函数调用之后,自动调用init函数,该对象消亡时,自动调用destroy函数。

注意:初始化函数和消亡函数不能有参数。

初始化函数可以在其他

4.2、延迟加载:

在Spring配置文件的bean标签中,可以设置该bean是否为延迟加载。

例:

<bean id=”testLazy” class=”test.TestLazy” lazy-init=”false”></bean>

表示实例化testLazy对象不延迟加载。

Spring框架入门:(非原著,转载)的更多相关文章

  1. Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

    https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=6 ...

  2. Spring框架入门之AOP

    Spring框架入门之AOP 一.Spring AOP简单介绍 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented ...

  3. Spring框架入门之Spring4.0新特性——泛型注入

    Spring框架入门之Spring4.0新特性——泛型注入 一.为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入. ...

  4. Spring框架入门之基于Java注解配置bean

    Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...

  5. spring框架入门day01

    struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少  --> [了解] spring ...

  6. Spring框架入门

    技术分析之什么是Spring框架        1. Spring框架的概述        * Spring是一个开源框架        * Spring是于2003 年兴起的一个轻量级的Java开发 ...

  7. Spring框架入门之Spring简介

    一.Spring简介(由Rod Johnson创建的一个开源框架)        Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿 ...

  8. Spring MVC -- Spring框架入门(IoC和DI)

    Spring MVC是Spring框架中用于Web应用开发的一个模块.Spring MVC的MVC是Model-View-Controller的缩写.它是一个广泛应用于图像化用户交互开发中的设计模式, ...

  9. spring框架入门之一

    一.什么是Spring框架 1.什么是Spring Spring框架是个一个全栈的框架.意思就是使用Spring的框架可以开发web层,service层还有dao层. 本质:Spring就是一个对象的 ...

随机推荐

  1. python流程控制语句 ifelse - 4

    嵌套 #! /usr/bin/python a = int(input ("请输入一个整数:")) : : print ("无法显示") else : prin ...

  2. SQL SERVER ->> CXPacket等待类型

    最近做了一个项目,把整个数据仓库平台下所有的表和索引都改成页级别的数据压缩.昨天发现测试环境下的某个workload跑得比平时慢.最后我们定位了到这个workload做的事情中可能造成性能下降的地方, ...

  3. C# 中通过API实现的打印类

    using System;using System.Collections;using System.Text;using System.Runtime.InteropServices; using ...

  4. poj 1017 Packets 裸贪心

    Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 43189   Accepted: 14550 Descrip ...

  5. PCB阻抗调节

    在PCB厂家调节的阻抗指的是:传输线的“特征阻抗”,反映传输线上所走“行波”某点的电压和电流的比值,与线长无关.传输线本身的特性. 线宽:反比 介质厚度:正比

  6. poj - 3259 Wormholes (bellman-ford算法求最短路)

    http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...

  7. 【POJ】3398 Perfect Service

    1. 题目描述某树形网络由$n, n \in [1, 10^4]$台计算机组成.现从中选择一些计算机作为服务器,使得每当普通计算机恰好与一台服务器连接(并且不超过一台).求需要指定服务器的最少数量 2 ...

  8. Android微信SDK API 调用教程

     最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这 ...

  9. warning:performSelector may cause a leak because its selector

    warning:performSelector may cause a leak because its selector     在ARC项目中使用 performSelector: withObj ...

  10. phonegap环境搭建

    最近在开发app, html5+php 采用phonegap进行打包 前端框架采用jquery mobile 这里phonegap创建安卓项目 3种方式 1.phonegap 2.cordova 3. ...