spring框架IOC

spring轻量级开源java EE框架 实现“一站式”的企业应用开发


IOC容器


AOP实现


数据访问支持

JDBC/Hibernate

声明式式事物


spring.io/projects

spring是面向Bean的编程

IOC(inversion of control)/DI(Dependency injection依赖注入)和AOP (面向切面编程)

优点:

低侵入式设计

独立于各种应用服务器

依赖注入特性将组件关系透明化,降低了耦合度

面向切面编程特性允许将通用任务进行集中式处理。

与第三方框架的良好整合


IOC

面向接口编程

将创建任务转移到容器中

repo.spring.io

将组件对象的控制权从代码本身转移到外部容器

组件化思想:分离关注点,接口和实现分离 接口来保证关联关系

用到的技术: JDOM 反射机制 工厂模式(单例模式)


spring-framework-3.2.13.RELEASE\docs\spring-framework-reference\html

xml里的schema引入index.html 或者 mvc.html

schema用来定义文档结构 (dtd,)

applicationContext-commons.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:aop="http://www.springframework.org/schema/aop"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
								   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
								   http://www.springframework.org/schema/tx 
								   http://www.springframework.org/schema/tx/spring-tx-2.0.xsd 
								   http://www.springframework.org/schema/aop 
								   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
	<!--Xxx dao = new dao.TestDao();  -->							   
	<bean id="testDao" class="dao.TestDao"></bean>
	
	
	<!--Xxx testBiz = new biz.TestBiz();  -->
	<!-- testBiz.setDao(testDao) -->
	<bean id="testBiz" class="biz.TestBiz">
		<property name="dao">
			<ref bean="testDao"/>
		</property>
	</bean>
</beans>
package com.beta.test;

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

public class Test {
	public static void main(String[] args) {
		//没有放在classpath下
		new FileSystemXmlApplicationContext("路径");
		//放在classpath下src下
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		TestBiz biz=(TestBiz)ctx.getBean("testBiz");
	}
}


package com.beta.biz.imp;


import com.beta.biz.ITestBiz;
import com.beta.dao.ITestDao;




public class TestBiz implements ITestBiz{
	private ITestDao dao;


	public ITestDao getDao() {
		return dao;
	}


	public void setDao(ITestDao dao) {
		this.dao = dao;
	}


	public  void TestBiz() {
		
	}
	
	
}

Bean的作用域
默认情况为单例: scope="singleton"
<bean id="user" class="entity.User" />
<bean id="user" class="entity.User"scope= " singleton"/>
类别 说明
singleton 在Spring容器中仅存在一个共享的Bean实例 尽量不要在Bean中保存属性 配置文件一起动就创建好了
prototype 每次从容器中都获取一个新的实例

(request.session.global session仅适用于webapplicationcontext环境)
request 每次HTTP请求都会创建一个新的Bean实例
session 同一个HTTP请求共享一个Bean实例
global session 同一个全局Session共享一个Bean实例

Spring Bean封装机制
Spring以Bean的方式管理所有的组件,Java EE的全部
组件都被视为Bean管理
Bean在Spring的容器中运行, Spring负责创建Bean的
实例,并管理其生命周期

BeanFactory
由org.springframework.beans.factory.BeanFactory
接口定义
BeanFactory是工厂模式( Factory pattern)的实现,
负责创建和管理bean

BeanFactory接口包含以下基本方法
getBean(String name)
containsBean(String name)
getType(String name)


ApplicationContext 是 BeanFactory 的子接口
实现类 ClassPathXmlApplicationContext
实现类 FileSystemXmlApplicationContext
//多个配置文件整合
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"conf/beans1.xml" , "conf/beans2.xml"} );


仅适用于WebApplicationContex环境




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值