[toc]

1. Spring概述

  1. Spring 官网 https://spring.io/

  2. Spring是一个IOC(DI)和AOP容器框架。

  3. Spring是一个开源框架

  4. Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能。同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能够实现,而在Spring中却非常的优雅和简洁。

    • 注: EJB即Enterprise JavaBean,是SUN的JavaEE服务器端组件模型。在JavaEE里,EJB称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(**MessageDriven Bean**)。在EJB3.0推出以后,实体Bean被单独分了出来,形成了新的规范JPA
  5. Spring的优良特性

    1. 非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API
    2. 依赖注入:DI——Dependency Injection,反转控制(IOC)最经典的实现。
    3. 面向切面编程:Aspect Oriented Programming——AOP
    4. 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期
    5. 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用XML和Java注解组合这些对象。
    6. 一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring 自身也提供了表述层的SpringMVC和持久层的Spring JDBC)。
  6. Spring模块

    image-20200514211331762

2. 搭建Spring运行时环境

2.1 加入JAR包
1
2
3
4
5
6
① Spring自身JAR包:spring-framework-4.0.0.RELEASE\libs目录下
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELE2ASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
② commons-logging-1.1.1.jar

image-20200514214025791

2.2 创建Spring的配置文件

通过如下步骤创建Spring的配置文件

使用Idea,setting-->Editor-->File and Code Templates-->Spring-beans.schema.xml-->Enable Live Templates (取名:applicationContext.xml)

2.3 HelloWorld

使用Spring创建对象,为属性赋值

2.3.1 创建Student类
1
2
3
4
5
6
7
8
9
10
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private String name;

private String sex;

private String address;
}
2.3.2 创建Spring配置文件

applicationContext.xml

1
2
3
4
5
6
7
8
9
10
11
<!-- 使用bean元素定义一个由IOC容器创建的对象 -->
<!-- class属性指定用于创建bean的全类名 -->
<!-- id属性指定用于引用bean实例的标识 -->
<bean id="student" class="com.justweb.helloworld.bean.Student">

<!-- 使用property子元素为bean的属性赋值 -->
<property name="studentId" value="1001"/>
<property name="stuName" value="Tom"/>
<property name="age" value="20"/>

</bean>
2.3.3 测试:通过Spring的IOC容器创建Student类实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class TestStudent {
@Test
public void test(){
//1. 创建IOC容器对象
ApplicationContext iocContainer = new ClassPathXmlApplicationContext( "applicationContext.xml" );

// 使用getBean通过id拿到创建的对象
// Student student = (Student)ctx.getBean( "student" );

// 通过bean的类型获取对象,但如果同一个类型的bean在XML文件中配置了多个,
// 则获取时会抛出异常,所以同一个类型的bean在容器中必须是唯一的。
// Student student = ctx.getBean( Student.class );

// 同时指定bean的id值和类型,来拿到对象 推荐使用
Student student = ctx.getBean( "student", Student.class );


System.out.println( "student = " + student );
}
}
2.3.4 pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<dependencies>
<!--测试所用的包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--spring框架所用包,有四个-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<!--记录日志包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!--lombok包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>

</dependencies>