1.将创造对象变成了拿
2.反转的是获取对象的方式:将创建对象、属性值的方式进行了反转,从new、SetXxx()反转成了从SpringIOC容器的getBean()
3.依赖注入DI:将属性值注入给属性,将属性注入给了Bean,又将Bean注入给了SpringIoc容器
4.抽象点来讲:SpringIOC 更像社会主义,需要什么直接从社会(IOC容器)中getBean,而不需要像资本主义那样,从生产开始直到产出需求的物质才获取。
注入的三种方式:
八种基本数据类型和String类型直接用Value赋值,对象的引用需要用ref-id值的方式来赋值
1.set方法注入 赋值
《property name="courseName" value="java"》《/property》
2.构造器注入
《constructor-arg value="java" index="0"》《/constructor-arg》
3.命名空间注入
《bean id="Course" class="org.nufe.entity.Course" p:courseName="java" p:courseHour="300" p:teacher-ref="teacher"》
4.自动装配(只支持ref类型):
《bean id="Course" class="org.nufe.entity.Course" p:courseName="java" p:courseHour="300" autowire="byName"》 byName 本质是Byid自动寻找其他bean的id值=该Course的属性名 byType/byConstructor
5.使用注解定义bean:通过注解的形式将bean及其相应的属性值放入IOC容器
《context:component-scan base-package="org.nufe.Dao;"》《/context:component-scan》 Spring会在启动的时候,会根据base-package在该包中扫描所有类,查找这些类是否含有注解
@Component:细化:Dao层@Repository Service层:@Service 控制器层:@Controller