要先使用,先来了解什么是IOC,AOP,DI?
通俗的来讲:IOC,即控制反转,是一种思想。即由主动得到控制对象,变成被动获得,由IOC来控制,过程反转了,因此得名。
官方文档:这是一个过程,其中对象仅通过构造函数参数、工厂方法的参数或对象实例在构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖项(即,它们使用的其他对象) . 然后容器在创建 bean 时注入这些依赖项。这个过程基本上是 bean 本身通过使用类的直接构造或诸如服务定位器模式之类的机制来控制其依赖项的实例化或位置的逆过程(因此得名,控制反转)。
先来看一段简单的例吧
创建一个user表:
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("name="+name);
}
}
记住这个set方法。
然后在resources目录下创建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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.tian.pojo.User">
<property name="name" value="张三"/>
</bean>
</beans>
<bean>标签的作用,用来得到类和注入值。
可以看到,name的值以及为注入为“张三”了。
接下来创建一个test类吧
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = context.getBean("user", User.class);
user.show();
}
}
通过ClassPathXmlApplicationContext获得配置文件,用getBean来获得类。
运行一下,得到。
name=张三
可以看到,我们没有直接new来获得User类,而是通过spring容器来获得的,这就是控制反转。这里用到了工厂模式和单例模式,当然spring的作用不止这些,还有动态代理,以及面向切面(AOP)等,这些以后再更。
未完待续.....