spring01——spring简介

我们现在讲的spring,其实是spring framework,进行对象的管理。
其他还有spring boot ,功能是让你近可能快的开发,基本上可以做到0配置开发,因为里面有许多默认配置,所以初学者不能从他开始学起,但他比较流行。
还有spring cloud ,也就是spring云
等等
我们要学习的是spring framwork
我们需要大约20个包。
aop是做我们aop(切面)的
aspect也是做切面的
beans是我们的基础包
context是用来…呃
core是核心包
jdbc是spring支持对数据库操作,但使用spring本身不需要。
test测试模块
tx是事务
web和webmvc是做springmvc时用的
在这里插入图片描述
在这里插入图片描述
这些包是jar包,说明文档,源码三份一起的。

那么spring是什么呢?

Spring 是一个轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架

spring的特点

⚫轻量—从大小与开销两方面而言 Spring 都是轻量的。完整的 Spring 框架可以在一
个大小只有 1MB 多的 JAR 文件里发布。并且 Spring 所需的处理开销也是微不足道
的。
⚫ 非侵入 ——在应用中,一般不需要引用 springjar 包里的类。
⚫ 控制反转——Spring 通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了
IoC,某一接口的具体实现类的选择控制权从调用类中移除,转交给第三方裁决。
将控制权交给接口–面向接口的编程
核心技术就是 DI 容器(依赖注入)
⚫ 面向切面(AOP)——Spring 提供了面向切面编程的丰富支持,允许通过分离应用的
业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。
应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责其它
的系统级关注点,例如日志或事务支持

为什么要使用spring?

1、降低组件之间的耦合度,实现各层之间的松耦合
2、容器还提供了多种设计模式,比如单例模式
3、容器提供了AOP技术,可以非常容易的实现权限、事务管理等等
4、对其他主流框架的兼容,如:集成Hibernate、JPA、Struts等,更便于开发
5、容器提供众多辅佐类,使用这些类能够加快应用的开发,如:
JdbcTemplate、 HibernateTemplate等
6、可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当
我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事
务传播。

spring 入门项目

先创建一个java项目(使用的是eclipse)
然后导包,现在只导入基本的(其中的junit是测试需要用的,可以网上查一下)
在这里插入图片描述

核心配置文件或者是核心类 作用
核心配置文件:*.xml(applicationContext.xml默认) 用于配置所有的类,这些类称为springBean
核心类 : BeanFactory(接口) 容器的工厂类,用于创建或者是获取springBean,也就是被spring配置文件中的类
applicationContext(接口) 它是BeanFactory的子类,叫做应用上下文,它的功能比BeanFactory更加强大

(后两者的区别:第一种是懒加载,定义好放进去,使用时再加载,第二种是非懒加载,定义好,直接加载以供使用)
(要求启动得快,用懒加载,要求响应速度快,就使用非懒加载)

我们开始做项目

建一个Person类,放个属性,放个方法

package com.cbb.bean;

/** 
 * 类描述:被spring管理
 * 作者: 地铁与人海
 * 创建日期:2019年3月11日
 * 修改人:
 * 修改日期:
 * 修改内容:
 * 版本号: 1.0.0   
 */

public class Person {
	private String name;
	
	public void eat() {
		System.err.println(name+":eatting...");
	}

	@Override
	public String toString() {
		return "Person [name=" + name + "]";
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
}

再写一个类使用原来的方式调用方法

package com.cbb.test;

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

import com.cbb.bean.Car;
import com.cbb.bean.Person;
import com.cbb.bean.User;

/** 
 * 类描述:调用方法
 * 作者: 地铁与人海
 * 创建日期:2019年3月11日
 * 修改人:
 * 修改日期:
 * 修改内容:
 * 版本号: 1.0.0   
 */

public class BeanTest {
	
	@Test
	public void test() {
		Person p = new Person();
		p.setName("hijack");
		p.eat();
	}
}

如果我们只定义如:

Person p = null;

下面两条语句就无法运行。

我们要实现的,就是之定义,就可以使用

我们想要实现这种效果,就要将Person配置到核心xml文件中。
我们创建一个applicationContext.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">
</beans>

我们开始在<beans>标签里面进行配置

	<!--配置的第一个spring类 
		相当于Person person = new Person();
		class:要配置的类	id: 唯一标识	
	 -->
	<bean id ="person" class="com.cbb.bean.Person"></bean>

然后我们开始使用,还是在BeanTest类中,条件在注释中

	@Test
	public void test2() {
		//加载spring的核心配置文件,初始化spring容器,创建springbean的实例
		ApplicationContext ctx = new  ClassPathXmlApplicationContext("applicationContext.xml");
		//获取容器实例化的对象
		Person p = (Person)ctx.getBean("person");
		//调用方法测试
		p.setName("rose");
		p.eat();
	}

在这里插入图片描述
我们可以通过这两个实现类实例化
ClassPathXmlApplicationContext : 用于在 classpath 下加载 xml 配置文件,
例如classpath:a.xml
FileSystemXmlApplicationContext: 用于加载文件系统中的 xml 配置文件,
例如 d:/a.x
getBean()方法有多个重载方法。使用它获取实例时需要强转一下。
然后就可以用了
也可以获取的时候直接进使用

Person p = ctx.getBean("person",Person.class);

这样就不用进行强转了。

END

猜你喜欢

转载自blog.csdn.net/qq_37989076/article/details/88604370