Spring框架介绍
Spring框架是一个轻量级的企业级应用框架
通过它可以贯穿表现层、业务层、持久层。集成方便,简单易用,具有如下特点:
Spring框架特色
Spring设计理念
是面向Bean的编程
Spring两大核心技术
控制反转(IoC:Inversion of Control)/依赖注入(DI:Dependency Injection)
面向切面编程(AOP:Aspect Oriented Programming)

如何使用spring
第一步,引入依赖
Spring的核心依赖为spring-context,我们在pom.xml中引入如下依赖。
xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.2.0</version>
</dependency>
第二步,添加配置文件
在resources目录下,添加applicationContext.xml文件,在该文件中配置如下内容:
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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="card" class="com.entity.Card">
<property name="id" value="1"/>
<property name="desc" value="学生卡"/>
</bean>
</beans>
如上配置,我们需要在com.entity包下,创建类Card,该类有id和desc两个属性,内容如下:
java
package com.entity;
public class Card {
private String id;
private String desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Card(String desc, String id) {
this.desc = desc;
this.id = id;
}
public Card() {
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
第三步,编写测试代码
随便找一个包下,创建Test类,在Test类中编写main方法,代码如下:
java
public class Test {
public static void main(String[] args) {
//加载spring配置
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Card card = (Card) context.getBean("card");
}
}
如此,我们就使用spring启动了代码,并使用了spring容器获取了Card对象。
控制反转和依赖注入
在没有spring之前,用户模块业务层调用数据层用户模块业务层与数据层高度耦合,怎么解决?
原因:
上次的例子就用到了控制反转和依赖注入
控制反转:创建对象的控制权转移,是一种程序设计思想
依赖注入:将依赖的对象注入到需要的类中去,是"控制反转"设计思想的具体实现方式
实例化bean的方式

注入方式
注入方式常用的有构造方式注入和setter方式注入,例子如下:
不同数据类型注入
spring支持不同数据类型的注入,具体如下:
示例如下:
xml
<bean id="card" class="com.dts.entity.Card">
<property name="id" value="1"/>
<property name="desc" value="学生卡"/>
<constructor-arg index="0" value="张三的学生卡"/>
<property name="list">
<list>
<value></value>
<null/>
<value>李四</value>
</list>
</property>
<property name="map">
<map>
<entry key="1" value="张三"/>
<entry key="2" value="李四"/>
</map>
</property>
</bean>
<bean id="student" class="com.dts.entity.Student">
<property name="card" ref="card"/>
<property name="id" value="1"/>
<property name="name" value="张三"/>
</bean>
如此,我们就了解了spring的最基础用法,可以通过spring开发简单的程序。