Java EE SSH框架之Spring(1)——Spring介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zl_StepByStep/article/details/80243053

一、Spring介绍

1.1、Spring在三层架构中的位置



1.2、Spring一站式框架

    ★ 因为Spring框架性质是属于容器性质的;

    ★ 容器中装有什么对象就有什么功能;

    ★ 不仅不排斥其他框架、还能帮其他框架管理对象

    ★ AOP(面向切面编程)支持;

    ★ IoC(控制反转)思想;

    ★ Spring JDBC;

    ★ AOP事务。


1.3、Spring中的IoC和DI思想

★ IoC 即 Inverse of Control (反转控制)

     将我们创建对象的方式反转了。

    以前对象的创建是由开发人员自己维护,包括依赖关系也是自己注入。使用Spring之后,对象的创建以及依赖关系可以由Spring完成创建以及注入。反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序(Spring)!

★ DI 即 Dependency Injection(依赖注入)  ——下一篇会详细讲解

    实现IoC思想需要DI做支持。

    注入方式():set方法注入(重点)、构造方法注入、p名称空间注入(了解即可)、spel注入(了解即可)

    注入类型:值类型注入(八大基本数据类型)、引用类型注入(将依赖对象注入)


1.4、BeanFactory(已过时) 和 ApplicationContext

    ★BeanFactory是Spring最原始的接口,针对原始接口的实现类功能较为单一,BeanFactory接口实现类的容器特点是每次在获得对象时才会创建对象。

    ★ApplicationContext是后来Spring的接口,提供了更多的功能,每次容器启动时就会创建容器中配置的所有对象。它有两个典型的实现类:①从类路径下加载配置文件:ClassPathXmlApplicationContext  ②从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext。

结论:Web开发中,使用ApplicationContext,在资源匮乏的环境可以使用BeanFactory。



二、搭建Spring开发环境

2.1、导包


下图中红框中Core Container(核心容器)是我们使用Spring最核心的几个包!

分别对应如下四个包:



Spring本身也是支持日志的,其日志系统使用的是目前市场上很成熟的Apache开发的日志包。


下面这个包可选



导入到lib下:


2.2、创建一个对象

package com.zl.bean;

public class User {
	private String name;
	private Integer age;
	private String sex;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}

2.3、书写配置文件,注册对象到容器

位置任意,建议在src下;配置文件名字任意,建议为 applicationContext.xml

导入约束

打开preference  -》  (搜cata就会出现XML)点击XML Catalog   -》 点击旁边的Add  -》  点击File System


按照下面的路径找到beans相应的xsd文件(XML约束),选择一个,这里我选的最后一个。

Key type改为Schema location,在Key后面追加,如下图:



点击OK之后看到Preference对话框如下:


继续OK后,在创建的applicationContext.xml里添加<beans></beans>,再点击下面的Design,看下图

  






判断导入约束成功与否,切换到source,按Alt+/,有如下提示,说明成功了



添加如下代码:



2.4、测试

①创建容器对象

ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");

②向容器“要”user对象

User u = (User)ac.getBean("user");


三、Spring配置详解

使用import元素可以导入其他Spring配置文件(路径依然是相对于src)


3.1、bean元素

 bean元素:使用该元素描述需要Spring容器管理的对象

     name属性:给被管理的对象起个名字,获得对象时根据该名称获得对象。名称可以重复,可以使用特殊字符。

     class属性:被管理对象的完整类名。

     id属性:和name属性功能相同。但是名称不可重复,不能使用特殊字符(/ *等都不行)。尽量使用name属性。

     scope属性

        取值①singleton(默认值,):单例对象,被标识为单例的对象在Spring容器中只会存在一个实例。

               ②prototype:多例原型,被标识为多例的对象,每次在获得时才会创建,每次创建都是新的对象。整合Struts2时,必须配置为多例,多个请求需要Spring创建不同的Action对象处理。

               ③request(基本不会用):Web环境下,对象与request生命周期一致。

               ④session(基本不会用):Web环境下,对象与session生命周期一致。

   声明周期属性

       init-method: 配置一个方法作为生命周期初始化方法,Spring会在对象创建之后立即调用。

       destroy-method:配置一个方法作为生命周期销毁方法,Spring容器在关闭并销毁所有容器中的对象之前调用。

      

       init、destroy方法写在User.java里面


3.2、Spring创建对象的方式

★空参构造方式

在实体类User中为其添加构造方法:


★静态工厂

自定义一个创建User对象的方法:

package com.zl.factory;

import com.zl.bean.User;

public class UserFactory {
	public static User createUser() {
		System.out.println("静态工厂创建User");
		return new User();
	}		
}

applicationContext.xml里面:

测试:

打印结果:


★动态实例化工厂

自定义一个创建User对象的方法,对比静态工厂:


applicationContext.xml

测试:





猜你喜欢

转载自blog.csdn.net/zl_StepByStep/article/details/80243053