終端安全管理產品排名
阿新 • • 發佈:2022-05-16
1.IOC底層原理
控制反轉,目的:降低耦合度,高內聚,低耦合。把物件建立和物件之間的呼叫過程,交給Spring進行管理。
xml解析、工廠模式,反射
2.IOC介面
- ioc思想基於IOC容器完成,ioc容器底層就是物件工廠。
- Spring提供了IOC容器實現的兩種方式:兩個介面,
- BeanFactory:IOC容器基本實現,是spring內部使用介面,不提供開發人員使用。載入配置檔案時不會建立物件,使用物件時才會建立物件(懶漢式載入物件)。
- ApplicationContext:BeanFatory的子介面,提供更多更強大的功能,一般供開發人員進行使用。載入配置檔案時就建立物件(飢漢式載入物件)。
- ApplicationContext介面實現類
- FileSystemXmlApplicationContext(“碟符路徑(絕對路徑)”)
- ClassPathXmlApplicationContext(“src目錄下類路徑”)
3.IOC操作Bean管理
- 什麼是Bean管理
- Bean 管理指的是兩個操作
- Spring 建立物件
- Spring 注入屬性
- Bean 管理操作的兩種方式
- 基於xml配置檔案方式實現
- 基於註解方式實現
4.IOC操作Bean管理(基於xml)
- 基於xml方式建立物件
- (1) 在Spring配置檔案中,使用Bean標籤,標籤裡面新增對應屬性,就可以實現對應物件建立
- (2) 在Bean標籤有很多屬性,常用的屬性:id、class、name
- (3) 建立物件的時候,預設也是執行無引數構造方法
1 <!--配置User物件建立--> 2 <bean id="user" class="com.spring5.User"></bean>
-
基於xml方式注入屬性
(1) DI:依賴注入,就是注入屬性
-
第一種注入方式:使用set方法進行注入
(1) 建立類,定義屬性和對應的set方法
1 public class Book { 2 private String bname;3 private String bauthor; 4 5 public void setBname(String bname) { 6 this.bname = bname; 7 } 8 public void setBauthor(String bauthor) { 9 this.bauthor = bauthor; 10 } 11 public static void main(String[] args) { 12 Book book = new Book(); 13 book.setBname("WeiSanJin"); 14 } 15 }
(2)在Spring配置檔案配置物件建立,配置屬性注入
1 <!--set方法注入屬性--> 2 <bean id="book" class="com.spring5.Book"> 3 <!--使用property完成屬性注入 4 name:類裡面屬性名稱 5 value:向屬性注入的值 6 --> 7 <property name="bname" value="WeiSanJin"></property> 8 <property name="bauthor" value="WeiSanJin"></property> 9 </bean>
第二種注入方式:使用有引數構造進行注入
(1) 建立類,定義屬性,建立屬性對應有引數構造方法
1 public class Orders { 2 private String oname; 3 private String address; 4 5 public Orders(String oname, String address) { 6 this.oname = oname; 7 this.address = address; 8 } 9 }
(2) 在spring 配置檔案中進行配置
1 <bean id="orders" class="com.spring5.Orders"> 2 <constructor-arg name="oname" value="WeiSanJin"></constructor-arg> 3 <constructor-arg name="address" value="WeiSanJin"></constructor-arg> 4 </bean>
(3)測試
1 @Test 2 public void TestOrder(){ 3 //1.載入Spring配置檔案 4 ApplicationContext context = new ClassPathXmlApplicationContext("base1.xml"); 5 6 //2.獲取配置建立的物件 7 Orders orders = context.getBean("orders",Orders.class); 8 9 System.out.println(orders.toString()); 10 }
5.IOC操作Bean管理(xml注入其他屬性)
1.字面量
(1)null值
1 <bean id="book" class="com.spring5.Book"> 2 <property name="bname" value="WeiSanJin"></property> 3 <property name="bauthor" value="WeiSanJin"></property> 4 <property name="address"> 5 <null></null> 6 </property> 7 </bean>
(2)屬性值包含特殊符號
1 //方法一:轉義字元 2 <property name="address" value="<北京&dt;"></property> 3 //方法二:CDATA 4 <property name="address"> 5 <value> 6 <![CDATA[<北京>]]> 7 </value> 8 </property>
2.注入屬性-外部Bean
(1)建立兩個類Service類和dao類
(2) 在service呼叫dao類的方法
(3) 在spring配置檔案中進行配置
1 public interface UserDao { 2 public void updata(); 3 } 4 5 public class UserDaoImpl implements UserDao{ 6 7 @Override 8 public void updata() { 9 System.out.println("dao updata......."); 10 } 11 } 12 13 public class UserService { 14 // 建立UserDao型別屬性,生成set方法 15 private UserDao userDao; 16 public void setUserDao(UserDao userDao) { 17 this.userDao = userDao; 18 } 19 20 public void add(){ 21 System.out.println("service add......"); 22 //原理注入方式 23 //UserDao userDao = new UserDaoImpl(); 24 //userDao.updata(); 25 } 26 } 27 28 // 第二步寫配置檔案xml檔案 29 // service和dao物件建立 30 <bean id="userService" class="com.spring5.service.UserService"> 31 <!-- 注入UserDao物件 32 name屬性:類裡面屬性名稱 33 ref屬性:建立userDao物件bean標籤id值 34 --> 35 <property name="userDao" ref="userDaoImpl"></property> 36 </bean> 37 // 配置dao物件 38 <bean id="userDaoImpl" class="com.spring5.dao.UserDaoImpl"></bean>
3.注入屬性-內部bean和級聯賦值