框架入门-spring01

目前的主流框架:

    SSH:spring strust2   hibernate

    SSM:spring springMVC MyBatis

三层架构:

    表示层--jsp(springMVC/struts)

    业务逻辑层--service(spring)

    持久层--dao(MyBatis/Hibernate)

spring相关概念

轻量级/一站式/开源的框架,使用基本的JAVABean代替EJB(有缺点,重量级框架,依赖许多东西)

    轻量级:依赖少

    开源的框架

一站式(javaee的三层结构中,都提供了不同的技术):

springMVC--web层/spring--spring的IOC/MyBites--spring的JDBCTemplate

Spring核心模块:

    Beans--数据对象 beans.jar

    Core--框架的基本组成部分 Core.jar

    Context--上下文 Context.jar

    SpELl--EL和JSTL依赖expression.jar

spring核心:

IOC(控制反转:有一个类,在类中有一个方法[不是静态方法],调用类中的方法,创建类的对象,使用对象调用方法,创建对象过程,需要new出对象,IOC则不是new出来,而是通过spring通过配置文件,交给spring配置创建对象,spring是一站式框架,javaee的三层结构中,都提供了不同的技术)

DI(依赖注入:在控制反转的基础之上,向类中注入属性的方式)

将创建对象的工作交给spring配置,IOC的两部分:

    1.配置文件方式

    2.注解方式

IOC的底层原理:

    1.xml的配置文件

    2.dom4j

    3.工厂设计模式

    4.反射

创建配置文件,配置创建类:

    1.配置文件的名称和位置不是固定的,建议放在src下,官方建议applicationContext

    2.引入约束schame, 可以在spring工具包中的spring-framework-4.3.14.RELEASE\docs\spring-framework-reference\html文件夹下的xsd-configuration.html文件数据从后往前找,找到beans文件

bean管理 bean创建对象的三种方式:                     

    1.使用类的无参数构造器创建(重点) 使用无参数构造器通过反射创建对象       

    2.使用静态工厂创建 创建静态方法返回对象                     

    3.使用实例工厂创建 创建普通方法,返回类的对象

bean标签常用属性:

    id属性:名称,任意定义,不能有特殊符号

    class属性:创建类的全路径

    name属性:本身功能和id相同,名称,任意定义,可以有特殊符号

    scope属性:范围,本身又存在几个属性:

            singleton:默认值,单例的,默认创建每次都是同一个对象

            prototype:多例的,默认创建每次都是同一个不同的对象

            request:web项目中,spring创建一个bean对象,将对象传入到request域中(不常用)

            session:web项目中,spring创建一个bean对象,将对象传入到session域中(不常用)

            globalSession:web项目中,spring创建一个bean对象,将对象传入到globalSession(全局Session,单点登录)中(不常用)

DI依赖注入部分:

属性注入(创建对象的时候,向类里面的属性设置(注入值)的三种方式(spring支持两种):

    1):使用setter方法注入(最多的)

<bean id="SetProperty" class="spring.property.SetProperty">

        <property name="name" value="属性值">property>

    bean>

2):有参数的构造

<bean id="ConstructerProperty" class="spring.property.ConstructerProperty">

        <constructor-arg name="name" value="构造参数值">constructor-arg>

    bean>

3):使用接口注入(spring不支持)

框架入门-spring01_第1张图片

 

spring整合web项目原理:

加载核心配置文件的方式: ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext");

效率问题:这样加载配置文件每次都会创建一个对象,效率低下,解决的方案就是讲压力全部转给服务器,在服务器启动的时候就加载配置文件并创建对象

    实现原理:ServletContext/Listener监听器,springmvc的ContextLoaderListener

具体使用:

1):在服务器启动的时候,为每一个项目创建一个ServletContext对象

2):在ServletContext对象创建的同时,使用监听器监听到ServletContext对象具体的创建时间

3):在监听到ServletContext对象创建的时候,加载spring配置文件,通过配置文件创建配置对象

4):将配置对象放到ServletContext域中(setAttribute方法)

5):获取配置文件对象的方式(getAttribuite)

数据注入

package spring.property;

import java.util.List;
import java.util.Map;
import java.util.Properties;

//注入复杂的数据类型
public class Person {
	private String[] arr;
	private List list;
	private Map map;
	private Properties properties;

	public void setArr(String[] arr) {
		this.arr = arr;
	}

	public void setList(List list) {
		this.list = list;
	}

	public void setMap(Map map) {
		this.map = map;
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	public void say() {
		System.out.println("arr:" + arr);
		System.out.println("list:" + list);
		System.out.println("map:" + map);
		System.out.println("properties:" + properties);
	}
}

	
		
		
			
				小王arr
				小王arr
				小王arr
			
		
		
		
		
			
				小王list
				小王list
				小王list
			
		
		
		
		
		    
		        
		        
		        
		    
		
		
		
		
		    
		        值1
		    
		
	

 

你可能感兴趣的:(ssm)