Spring是一個基于IOC和AOP的結(jié)構(gòu)J2EE系統(tǒng)的框架
IOC 反轉(zhuǎn)控制 是Spring的基礎(chǔ),Inversion Of Control 簡單說就是創(chuàng)建對象由以前的程序自己new 構(gòu)造方法來調(diào)用,變成了交由Spring創(chuàng)建對象
DI 依賴注入 Dependency Inject. 簡單地說就是拿到的對象的屬性,已經(jīng)被注入好相關(guān)值了溉箕,直接使用即可
-
在idea中創(chuàng)建spring項目
-
新建項目,路徑; 項目創(chuàng)建完畢,Spring的jars都已經(jīng)準(zhǔn)備好了
- 準(zhǔn)備Category類,用來演示控制反轉(zhuǎn)和依賴注入
package com.jd.java;
public class Category {
private int id;
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
}
在不使用框架之前我們平時調(diào)用方法分三步,運行結(jié)果成功輸出“Spring”
public class testSpring{
public static void main(String[] args) {
//1. 創(chuàng)建一個category 的實例對象
Category category = new Category();
//2. 設(shè)置實例對象的name屬性
category.setName("String");
//3. 調(diào)用getName()方法
System.out.println(category.getName())
}
}
- 接下來我們使用spring, 在/src目錄下 新建Spring的配置文件spring-config.xml姓蜂,spring-config.xml是Spring的核心配置文件按厘,通過關(guān)鍵字category即可獲取Category對象,該對象獲取的時候钱慢,即被注入了字符串“Spring”到name屬性中
<?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">
<bean id="category" class="com.jd.java.Category">
<property name="name" value="Spring"></property>
</bean>
</beans>
這時候我們就配置好了Category Bean的信息逮京,我們再調(diào)用getName()方法的時候就不向之前一樣了,也需要3個步驟束莫。
-1. 創(chuàng)建一個Spring的IOC容器對象
-2. 從IOC容器中獲取Bean實例
-3. 調(diào)用getName()方法
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
// 創(chuàng)建一個Spring的IOC容器懒棉,Spring可以幫助我們創(chuàng)建和管理對象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
// 從容器中獲取Bean實例
// Bean的英文是“豆子”,容器就是用來裝“豆子”的
Category ca = (Category)context.getBean("category");
System.out.println(ca.getName());
}
}
-
運行結(jié)果如下: