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包
1 | beans core context expression common-logging//日志 |
xml文件限制
1 | <?xml version="1.0" encoding="UTF-8"?> |
测试文件
1 | package cn.itcast.ioc; |
Bean标签常用属性
①.id
起名称,可以任意命名
不能包含特殊符号
根据id得到配置对象
②.class属性
创建对象所在类的全路径
③.name属性
功能和id属性一样,name可以包含特殊字符
④.scope属性
在测试文件中调用两次函数:
singleton 默认值,单例
运行结果:prototype 多例
运行结果:request 创建对象并把对象放到request里面
- session 创建对象并把对象放到session里面
- globalSession 创建对象并把对象放到globalSession里面
属性注入:(spring里面只支持前两种)
set方法注入1
2
3
4
5
6
7
8
9
10
11package 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
赋值
有参数构造注入1
2
3
4
5
6
7
8
9
10package 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
1
2
3
4
5
6
7
8
9
10
11package 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
1
2
3
4
5
6package cn.itcast.ioc;
public class UserDao {
public void add() {
System.out.println("Dao........");
}
}
然后在applicationContext.xml
文件中使用以下方法给调用