SpringIOC-控制反转
说白了就是不需要我们自己来new对象,将操作权给Spring来创建对象,减少了各个类之间的偶合依赖
需要日志包支持和4个核心包
创建对象
书写applicatoin.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
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--Student stu =new Student()-->
<bean id="stu" class="com.bjsxt.spring1.Student"></bean>
</beans>
解析xml创建对象
//[1]解析xml文件
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//[2]获得对象
//Student stu = (Student) app.getBean("stu");
Student stu1 = app.getBean("stu", Student.class);
stu1.eat();
DI-依赖注入
给创建好的对象中的全局属性或对象进行赋值操作
构造器注入
<constructor-arg name="age" value="18"></constructor-arg>
ref=class全限定名或bean-id
set注入
<property name="name" value="lisi"></property>
自动注入
autowire="byName" "byType" "constructor"
其他类型注入
数组
<property name="arr">
<array>
<value>A</value>
</array>
</property>
list
<list>
<value>A</value>
</list>
set
<set>
<value>A</value>
</set>
map
<map>
<entry>
<key><value>A</value></key>
<value>1</value>
</entry>
</map>
手动装配和自动装配
手动装配:构造方法和Setter方法
自动装配:基于注解
@Value(" ") 普通值
@Autowired 按类型注入
@Autowired @qualifier("") 按照名称注入
@Resource按照名称注入
<!-- 组件扫描,扫描含有注解的类 -->
<context:component-scan base-package="com.itheima.g_annotation.a_ioc"></context:component-scan>