一、Spring概念

1.Spring是开源的轻量级框架。

2.Spring核心主要有两部分:

(1)aop:面向切面编程,扩展功能不是修改源代码实现,而是通过配置文件。

(2)ioc:控制反转。(对象的创建不是通过new方法来实现,而是通过Spring配置创建类对象)

3.Spring是一站式框架,在Java EE三层结构中,每一层都提供不同的解决技术。

   Web层:Spring MVC

   Service层:Spring的ioc

   Dao层:Spring的jdbc Template

4.Spring版本:现阶段用的都是Spring 4.x版本。

二、IOC底层原理

1.ioc底层原理使用技术

(1)xml配置文件

(2)dom4j解决xml

(3)工厂设计模式

(4)反射机制

2.目的:使用ioc主要是为了解耦合,减低类与类之间的耦合度。所谓的耦合度,是指程序中,模块与模块之间信息或参数依赖的程度。

三、IOC使用案例

1.新建web工程,导入相应的jar包。

java springmvc 服务器推 spring javaweb_xml

2.在scr下创建Spring配置文件,官方建议命名为applicationContext.xml。

java springmvc 服务器推 spring javaweb_java springmvc 服务器推_02

在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"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


	<bean id="user" class="com.org.ioc.User"></bean>

</beans>

3.新建user类。

package com.org.ioc;

public class User {
	
	public void add(){
		System.out.println("add.....");
	}

}

4.新建测试类。

package com.org.ioc;

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

public class IocTest {

	@Test
	public void testIoc() {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		User user = (User) context.getBean("user");
		System.out.println(user);
		user.add();
		
	}

}

程序输出结果:

com.org.ioc.User@12cdcf4

add.....

总结:使用IOC可以改变传统的new一个对象的方式,而是采用反射机制来创建对象,降低耦合度。

四、Spring的bean管理(xml方式)

1.bean实例化的方式:

(1).使用类的无参数构造创建,如果类里面没有无参数的构造,会出现异常。

(2).使用静态工厂创建,创建静态类的方法,返回类对象。

(3).使用实例工厂创建,创建不是静态的方法,返回类对象。

2.bean标签常用属性

(1)id属性:起名称,id属性值名称任意命名

- id属性值,不能包含特殊符号

- 根据id值得到配置对象

(2)class属性:创建对象所在类的全路径

(3)name属性:功能和id属性一样的,id属性值不能包含特殊符号,但是在name属性值里面可以包含特殊符号

(4)scope属性

- singleton:默认值,单例

- prototype:多例

- request:创建对象,把对象放到request域里面

- session:创建对象,把对象放到session域里面

- globalSession:创建对象,把对象放到globalSession里面