1.spring简介
Spring官网有Spring家族技术的介绍,有相应框架的jar 包和文档,还有源码文件,必要的时候可以参考
Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的。Spring 的核心是控制反转(IoC)和面向切面编程(AOP)。Spring 是可以在 Java SE/EE 中使用的轻量级开源框架。
Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。就是让对象和对象(模块和模块)之间关系不是使用代码关联,而是通过配置来说明。即在 Spring 中说明对象(模块)的关系。
Spring 根据代码的功能特点,使用 Ioc 降低业务对象之间耦合度。IoC 使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了。而是由 Spring 容器统一管理,自动“注入”,注入即赋值。 而 AOP 使得系统级服务得到了最大复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由 Spring 容器统一完成“织入”。
Spring是一个为简化企业级开发而生的开源框架。使用Spring开发可以将Bean对象,Dao组件对象,Service组件对象等交给Spring容器来管理,这样使很多复杂的代码在Spring中开发却变得非常的优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。
Spring是一个IOC(DI)和AOP容器框架
2.spring的优点
1)非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API。
2)控制反转:IOC——Inversion of Control,指的是将对象的创建权交给Spring去创建。使用Spring之前,对象的创建都是由我们自己在代码中new创建。而使用Spring之后。对象的创建都是由给了Spring框架。
3)依赖注入:DI——Dependency Injection,是指依赖的对象不需要手动调用setXXX方法去设置,而是通过配置赋值。
4)面向切面编程:AOP——Aspect Oriented Programming,在不修改源代码的基础上进行功能扩展。
5)容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期。
6)组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用XML和Java注解组合这些对象。
7)一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring 自身也提供了表述层的SpringMVC和持久层的JDBCTemplate)。
3.Spring框架分为五大模块:
- Core Container:核心容器
- Beans提供 BeanFactory,它是一个工厂模式的复杂实现。
- Core提供了框架的基本组成部分,包括IOC和DI功能。
- Context建立在由核心和 Bean 模块提供的基础上,它是访问定义和配置的任何对象的媒介。ApplicationContext 接口是上下文模块的重点。
- SpEL在运行时提供了查询和操作一个对象的强大的Spring表达式语言。
- AOP&Aspects:提供了面向切面编程的实现。
- DataAccess/Integration:提供了对数据访问/集成的功能。
- Web:提供了面向Web应用程序的集成功能。
- Test:提供了对JUnit 或 TestNG 框架的测试功能。
4. HelloWord
1.导入Spring和junit的jar包
<!--导入spring和junit的jar包-->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2.创建一个类并添加一个属性
- 目的:让IOC容器去管理这个类的对象
package com.zyd.bean;
public class HelloSpring {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void sayHello(){
System.out.println("Hello :"+name);
}
}
3.创建Spring的配置文件applicationContext.xml
- 配置对象的管理信息
- 默认采用无参构造器创建对象
<!--通过配置,让ioc容器管理bean对象
bean标签:
id属性:唯一标识(自定义)
classs属性:全类名
Spring会识别bean标签,读取class属性,创建其对象,读取id属性,作为该对象在ioc容器中的唯一标识
-->
<bean id="hello" class="com.zyd.bean.HelloSpring">
<!--bean标签内,可以为name属性赋值-->
<property name="name" value="Spring"/>
</bean>
4.测试
@Test
public void test01(){
//1. 获得到IOC容器对象
ApplicationContext ioc=new ClassPathXmlApplicationContext("applicationContext.xml");
//2. 可以从ioc容器内获取到对象
//2.1 根据标签的id值获取bean对象
HelloSpring hello = (HelloSpring) ioc.getBean("hello");
//3. 调用方法进行测试
hello.sayHello();
}