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基礎上完成操作。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcugzMkNTMmRGOyEGZhVmM2kzMkVTM2QWN4gTY4gDNhBTZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
1.png
2.png
四個最基本的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屬性
在測試檔案中調用兩次函數:
4.png
-
singleton 預設值,單例
運作結果:
3.pngspring入門 - prototype 多例 5.png
spring入門 spring入門 - 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
檔案中使用以下方法給調用