Spring框架入门:(非原著,转载)
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框架入门:(非原著,转载)的更多相关文章
- 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 ...
- Spring框架入门之AOP
Spring框架入门之AOP 一.Spring AOP简单介绍 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented ...
- Spring框架入门之Spring4.0新特性——泛型注入
Spring框架入门之Spring4.0新特性——泛型注入 一.为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入. ...
- Spring框架入门之基于Java注解配置bean
Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...
- spring框架入门day01
struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少 --> [了解] spring ...
- Spring框架入门
技术分析之什么是Spring框架 1. Spring框架的概述 * Spring是一个开源框架 * Spring是于2003 年兴起的一个轻量级的Java开发 ...
- Spring框架入门之Spring简介
一.Spring简介(由Rod Johnson创建的一个开源框架) Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿 ...
- Spring MVC -- Spring框架入门(IoC和DI)
Spring MVC是Spring框架中用于Web应用开发的一个模块.Spring MVC的MVC是Model-View-Controller的缩写.它是一个广泛应用于图像化用户交互开发中的设计模式, ...
- spring框架入门之一
一.什么是Spring框架 1.什么是Spring Spring框架是个一个全栈的框架.意思就是使用Spring的框架可以开发web层,service层还有dao层. 本质:Spring就是一个对象的 ...
随机推荐
- J2ee 巴巴网站制作(一)
用户模块图:
- oracle11g OEM无法连接到数据库实例解决办法
我的电脑是32位的win7家庭版系统,那么这样的系统能不能装上oracle呢?能的!就是可能会出错,在装oracle时,每个人遇到的问题都不同,有的人装了双系统,有的人重做了系统,真心酸,先让电脑断网 ...
- SAP初级书籍(PM相关)
SAP EAM设备维护系统应用及案例 SAP管理技术探秘:设备维护(全彩印刷) SAP MDM 主数据管理 SAP从入门到精通 SAP实施大全
- php post和get
作为一个计算机系统,输入输出设备作为非核心设备却是不可或缺的,硬件如此,软件亦是如此.试想一台功能强劲的计算机,如果没有输入输出设备,它与一块只能耗电并且发出嗡嗡噪音的废铁有何不同.应用程序的道理也是 ...
- 《Java编程那点事儿》读书笔记(六)——异常处理
1.抛出异常:throw 异常对象; 下面的代码是一个进制转换代码,可以转换为2进制和8进制,如果输入其他参数,则抛出异常. public static String transform(int va ...
- 8.cadence.CIS[原创]
一.CIS数据库配置 ------ ---------------------------- --------------- ------------------ ---- 二.CIS放置元件 --- ...
- HDU 4691 Front compression(后缀数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4691 题意:给出Input,求出Compressed output.输出各用多少字节. 思路:求后缀数 ...
- opencv实现KNN手写数字的识别
人工智能是当下很热门的话题,手写识别是一个典型的应用.为了进一步了解这个领域,我阅读了大量的论文,并借助opencv完成了对28x28的数字图片(预处理后的二值图像)的识别任务. 预处理一张图片: 首 ...
- Server Profiler
Server Profiler 2014-10-31 工作原理 SQL Server Profiler这个工具是SQL Trace的一个GUI的版本,而SQL Trace是一组脚本,自SQL Serv ...
- Linux多线程(二)(线程等待,退出)
1. 线程的等待退出 1.1. 等待线程退出 线程从入口点函数自然返回,或者主动调用pthread_exit()函数,都可以让线程正常终止 线程从入口点函数自然返回时,函数返回值可以被其它线程用pth ...