ioc:https://www.jianshu.com/p/695b2a25a6ff
教学视频:https://www.bilibili.com/video/av14839030/
在eclipse里面遇到的问题
① .遇到红色波浪线就把鼠标放在上面,导入jar包用在crtl+shift+M
②.The constructor ClassPathXmlApplicationContext(String) refers to the missing type
出现此问题可能是jar包没有导入成功,将jar包再导入一次
ioc底层原理
IOC:控制反转,把对象创建交给spring进行配置
DI:依赖注入,向类里面的属性设置值
依赖注入不能单独存在,需在ioc基础上完成操作。
四个最基本的jar包
beans core context expression common-logging//日志
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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
测试文件
package cn.itcast.ioc;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.property.PropertyDemo1;
public class TestIOC {
@Test
public void testUser() {
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
PropertyDemo1 demo1 = (PropertyDemo1) context.getBean("demo");
demo1.test1();
}
}
Bean标签常用属性
①.id
起名称,可以任意命名
不能包含特殊符号
根据id得到配置对象
②.class属性
创建对象所在类的全路径
③.name属性
功能和id属性一样,name可以包含特殊字符
④.scope属性
在测试文件中调用两次函数:
-
singleton 默认值,单例
运行结果:
-
prototype 多例
运行结果:
request 创建对象并把对象放到request里面
session 创建对象并把对象放到session里面
globalSession 创建对象并把对象放到globalSession里面
属性注入:(spring里面只支持前两种)
set方法注入
package cn.itcast.property;
public class Book {
private String bookname;
public void setBookname(String bookname) {
this.bookname=bookname;
}
public void demobook() {
System.out.println("book...."+bookname);
}
}
然后在applicationContext.xml
文件中使用以下方法给bookname
赋值
有参数构造注入
package cn.itcast.property;
public class PropertyDemo1 {
private String username;
public PropertyDemo1(String username) {
this.username=username;
}
public void test1() {
System.out.println("demo1........"+username);
}
}
然后在applicationContext.xml
文件中使用以下方法给username
赋值
注入对象类型属性
通过set方法在UserService.java
调用UserDao.java
中的add函数
UserService.java
package cn.itcast.ioc;
public class UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao= userDao;
}
public void add() {
System.out.println("Service........");
userDao.add();
}
}
UserDao.java
package cn.itcast.ioc;
public class UserDao {
public void add() {
System.out.println("Dao........");
}
}
然后在applicationContext.xml
文件中使用以下方法给调用