一,关于spring概念的理解
1,spring可以看做是项目的管家,负责管理项目中的所有对象(包括web层,service层和dao层)。
2,spring一站式框架:spring跨年性质是属于容器性质的,它之所以能够处理请求,是因为容器中装了处理请求的对象,容器中装了什么对象它就具备什么功能,所以称之为一站式。
3,spring的核心是IOC反转控制和AOP面向切面
4,spring不排斥任何开源框架,并且能够帮助其他框架管理对象
spring中IOC和DI的概念
ioc 反转控制 就是将我们创建对象的方式反转了 以前对象的创建时由开发人员自己维护 包括依赖关系也是自己注入 学习spring之后 对象的创建以及依赖关系可以由spring完成创建和注入 反转控制也就是反转了对象的创建方式 从人们自己到由spring自己进行
di 比IOC概念要小一些 Dependency Injection 依赖注入
实现IOC思想 DI做支持
注入:set方法注入 构造方法注入 字段注入
注入类型:spring支持值类型和引用类型注入
值类型注入也就是 比如刚才的demo ,user中可以注入具体的名字或者年龄 也就相当于八大基本数据类型
引用类型注入:将依赖的对象注入 比如,将新建的address对象注入到user对象中
BeanFactory和ApplicationContext
BeanFactory接口:最底层的接口,是spring的最原始接口,针对原始接口的实现类,功能较为单一。 BeanFactory接口实现类的特点是,每次在获得对象时才会创建对象
ApplicationContext实现类:ApplicationContext实现类的特点是每次容器启动时就会创建容器中创建的所有对象,除此以外,它还提供了更加丰富的功能。典型的两个ApplicationContext的实现类为:ApplicationContex从类路径下加载配置文件ClassPathXmlApplicationContext . ApplicationContext从硬盘绝对路径下加载配置文件FileSystemXmlApplicationContext 。 在单机情况下通常使用ClassPathXmlApplicationContext . 若使用后者,在硬盘绝对路径下加载,则需要在后面加上括号指明文件的具体路径。
结论上来说:在将来web开发中,使用applicationContext完成,而在资源匮乏的环境中可以使用BeanFactory(资源匮乏:如在手机上)
二,spring搭建步骤
1,导包
spring首先导入四个基本包
日志包
总包
2,创建一个对象让spring装,
创建一个bean包,并在这个包中创建user.java(也就是Javabean),并且创建属性,也就是创建了对象
3,在src中书写配置,注册对象到容器,书写xml文件,applicationContext.xml放在src下(这个文件的本身位置是任意的,名字也是任意的,只是建议这样书写)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<bean name="user" class="cn.itcast.bean.User" ></bean>
<beans>
4,约束引入,在Windows下面的属性中选择cata,如下图操作
然后将user对象交给spring容器处理
5,接下来进行代码测试,编写测试类代码Demo.java
package cn.itcast.a_hello;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.bean.User;
public class Demo {
@Test
public void fun1(){
//1 创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2 向容器"要"user对象
User u = (User) ac.getBean("user");
//3 打印user对象
System.out.println(u);
}
}
三,spring配置详解
1,ApplicationContext.xml中bean元素相关配置各个标签的作用
bean元素:使用该元素描述spring容器管理的对象
name属性:给被管理的对象起个名字,获得对象是根据名称获得对象
class属性:被管理对象的完整类名
ID属性:与name属性一模一样,关于ID的话,名称不可重复,不能使用特殊字符;name属性名称则可以重复,可以使用特殊字符。结论:尽量使用name属性。
1.1 Bean元素的进阶,scope属性(重点是singleton和prototype):
一般情况下是使用singleton,但是要整合struts2时则要在ActionBean中使用prototype。而request和session属性基本上是用不到的。
singleton(默认值):单例对象,所谓单例对象,就是在spring容器中只会存在一个的实例
prototype属性:多例原型被标记为多例的对象,每次再获得才会创建并且每次创建都是新的对象
request: web环境下,对象与request生命周期一致,也就是每当请求处理完一次,对象将从spring容器中移除
session:web环境下,对象与session生命周期一致
1.2 Bean元素的进阶,生命周期属性(了解)
生命周期属性,配置一个方法作为生命周期初始化方法,spring会在对象创建之后立即调用(init-method)。也可以配置一个对象作为销毁方法,spring在关闭并销毁所有容器中的对象之前调用(destory-method)
2,三种对象创建方式
创建方式一:空参构造创建(重点)
配置文件
然后只需在demo.java中编写测试类
创建方式二:静态工厂创建(了解)
配置:
调用UserFactory的createUser方法创建名为user2的对象.放入容器
<bean name="user2"
class="cn.itcast.b_create.UserFactory"
factory-method="createUser" ></bean>
userFactory.Java工厂如下:
最后编写测试类
创建方式三:实例工厂创建(了解)
实例工厂创建和静态工厂创建类似,只是在userFactory.java中,静态工厂使用了static 而实例工厂没有使用static。静态工厂可以直接使用类名完成各项功能的实现,而实例工厂则需要有固定的对象,才可以完成功能的实现。
配置文件:
调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器
UserFactory.java中工厂的编写
接下来就是测试类,测试类同静态方法创建一样。
3, spring的模块化配置
分模块配置,随着项目的开发,文件越来越多,可能吧所有对象都放一个配置文件里面太多,于是可以再一个主配置文件中引入其他配置文件,导入其他配置文件关键词:<import resource="分配置文件的所在路径">
4,spring属性注入(set方式)
spring属性注入方式一共有四种:set方法注入;构造函数注入;p名称空间注入;spel注入;其中后两种作为了解,前两种作为掌握。
4.1 set方式注入,以下为其在配置文件中的操作,具体还需建立user和car的bean。并得到他们的get set 以及toString方法
4.2构造函数注入
4.3,p名称空间注入(可以简化property那种繁琐的注入)
4.4,spel注入(Spring Expression Language 也就是Spring表达式语言)
原文地址:https://www.cnblogs.com/319064057-lx/p/10849860.html