什么是Spring、IOC、AOP、DI?
Spring是一个基于IOC和AOP的结构J2EE系统的框架。
IOC(Inversion Of Control)控制反转(Spring的基础,创造对象由以前的程序员new构造方法来调用,变成交由Spring创建对象)
AOP(Aspect Oriented Programming)面向切面编程
DI(Dependency Injection)依赖注入(简单来说就是拿到了对象的属性,已经注入好相关值了,直接使用即可)
#第一部分:IOC、DI
1、首先创建一个pojo包,里面有个Product.java
pack com.test.pojo import ...... public class Product { private String name; public void setName(String name) { this.name=name; } public String getName() { return name; } }
2、在applicationContext.xml中配置Product的属性
<?xml> <beans ......> <bean name="p" class="com.test.pojo.Product"> <property name="name" value="天地一号"> </bean> </beans>
3、测试类测试是否运行成功
package com.test.test; import com.test.pojo.Product; public class TestSpring{ ApplicationContext context = new ClassPathXmlApplicationContext(new String [] {"applicationContext.xml"}); Product p = (Product) context.getBean("p"); System.out.println(p.getName()); // 输出: 天地一号 }
扫描二维码关注公众号,回复:
2312995 查看本文章
#第二部分:注入对象
1、在刚刚的基础基础之上,创建一个Category.java
pack com.test.pojo import ...... public class Category{ private String name; public void setName(String name) { this.name=name; } public String getName() { return name; } }
2、在applicationContext.xml中追加配置Category这个bean对象
<?xml> <beans ......> <bean name="p" class="com.test.pojo.Product"> <property name="name" value="天地一号" > <property name="category" ref="c"> <!--DI体现:注入Category这个bean对象--> </bean> <bean name="c" class="com.test.pojo.Category"> <property name="name" value="饮料类别"> </bean> </beans>
3、测试类测试是否运行成功
package com.test.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; // 注意,这里虽然用到了Category这个对象,但是不用导入包,因为在xml配置文件里面,早已经把Category注入到了Product这个bean对象当中!!! import com.how2java.pojo.Product; public class TestSpring { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); Product p = (Product) context.getBean("p"); System.out.println(p.getName()); // 输出:天地一号 System.out.println(p.getCategory().getName()); // 输出:饮料类别 } }
#第三部分:注解方式