依賴注入方式:手動裝配 和 自動裝配java
手動裝配:通常進行配置信息都採用手動spring
基於xml裝配:構造方法、setter方法數組
基於註解裝配:app
自動裝配:struts和spring 整合能夠自動裝配ide
byType:按類型裝配ui
byName:按名稱裝配this
constructor:構造裝配,spa
auto: 不肯定裝配。component
一.構造方法注入xml
User.java
public class User { private Integer uid; private String username; private Integer age; public User(Integer uid, String username) { super(); this.uid = uid; this.username = username; } public User(String username, Integer age) { super(); this.username = username; this.age = age; } }
ApplicationContext.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-3.0.xsd"> <!-- 構造方法注入 * <constructor-arg> 用於配置構造方法一個參數argument name :參數的名稱 value:設置普通數據 ref:引用數據,通常是另外一個bean id值 index :參數的索引號,從0開始 。若是隻有索引,匹配到了多個構造方法時,默認使用第一個。 type :肯定參數類型 例如:使用名稱name <constructor-arg name="username" value="jack"></constructor-arg> <constructor-arg name="age" value="18"></constructor-arg> 例如2:【類型type 和 索引 index】 <constructor-arg index="0" type="java.lang.String" value="1"></constructor-arg> <constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg> --> <bean id="userId" class="com.itheima.f_xml.a_constructor.User" > <constructor-arg index="0" type="java.lang.String" value="1"></constructor-arg> <constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg> </bean> </beans>
二.property屬性注入
User.java
package com.zk.myspring; public class User { private Integer uid; private String username; private Integer age; public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [uid=" + uid + ", username=" + username + ", age=" + age + "]"; } public User(Integer uid, String username, Integer age) { super(); this.uid = uid; this.username = username; this.age = age; } public User() { super(); } }
Test.java
package com.zk.myspring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[]args) { String path="/com/zk/myspring/ApplicationContext.xml"; ApplicationContext ac=new ClassPathXmlApplicationContext(path); User user=(User) ac.getBean("UserId"); System.out.println(user); } }
ApplicationContext.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-3.0.xsd"> <bean id="UserId" class="com.zk.myspring.User"> <!-- setter方法注入: 普通數據: <property name="" value="值"> 等效 <property name=""> <value> 值 </value> </property> 引用數據 <property name="" ref="另外一個bean"> </property> 等效 <property name=""> <ref bean="" /> </property> --> <property name="username" value="jack"></property> <property name="uid" value="1"></property> <property name="age" value="24"></property> <!-- p命名空間,對setter方法注入進行簡化,替換<property name="屬性名">,而是在<bean 屬性名="普通值"> --> </bean> </beans>
ApplicationContext的p命名空間
<?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-3.0.xsd"> <bean id="UserId" class="com.zk.myspring.User" p:uid="1" p:age="24" p:username="zk" p:company-ref="company1"></bean> <bean id="company1" class="com.zk.myspring.Company" p:name="computer science" p:address="徐州市中國礦業大學計算機科學與技術學院"> </bean> </beans>
三.集合屬性注入
CollData.java
package com.zk.myspringcoll; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class CollData { private String[] arrayData; private List<String> listData; private Set<String> setData; private Map<String,String> mapData; private Properties propersData; public String[] getArrayData() { return arrayData; } public void setArrayData(String[] arrayData) { this.arrayData = arrayData; } public List<String> getListData() { return listData; } public void setListData(List<String> listData) { this.listData = listData; } public Set<String> getSetData() { return setData; } public void setSetData(Set<String> setData) { this.setData = setData; } public Map<String, String> getMapData() { return mapData; } public void setMapData(Map<String, String> mapData) { this.mapData = mapData; } public Properties getPropersData() { return propersData; } public void setPropersData(Properties propersData) { this.propersData = propersData; } @Override public String toString() { return "CollData [arrayData=" + Arrays.toString(arrayData) + ", \nlistData=" + listData + ", \nsetData=" + setData + ", \nmapData=" + mapData + ", \nproperties=" + propersData + "]"; } }
Test.java
package com.zk.myspringcoll; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestColl { public static void main(String[]args) { ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); CollData colldata=(CollData) ac.getBean("CollData"); System.out.println(colldata); } }
ApplicationContext.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-3.0.xsd"> <!-- 集合注入都是給<property>添加子標籤 數組:<array> List:<List> Set:<set> Map:<map> Properties:<props><prop key="">value</prop></props> 普通數據:<value> 引用數據:<ref> --> <bean id="CollData" class="com.zk.myspringcoll.CollData"> <property name="arrayData"> <array> <value>DS</value> <value>DZD</value> <value>屌絲</value> <value>吊中吊</value> </array> </property> <property name="listData"> <list> <value>list1</value> <value>list2</value> <value>list3</value> <value>list4</value> <value>list5</value> </list> </property> <property name="setData"> <set> <value>set1</value> <value>set2</value> <value>set3</value> <value>set4</value> <value>set5</value> </set> </property> <property name="mapData"> <map> <entry key="1" value="value1"></entry> <entry key="2" value="value2"></entry> <entry key="3" value="value3"></entry> <entry key="4" value="value4"></entry> <entry key="5" value="value5"></entry> <!-- <entry> <key><value>6</value></key> <value>value6</value> </entry> --> </map> </property> <property name="propersData"> <props> <prop key="高富帥">嫐</prop> <prop key="白富美">嬲</prop> <prop key="屌絲">挊</prop> </props> </property> </bean> </beans>
四.自動裝配bean
<?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-2.5.xsd"> <!-- 自動裝配(用的很少): byName按名稱自動匹配(即要裝配的bean中的屬性名稱和配置中的bean名稱相同就會自動裝配,如UserService類中的屬性和userDAO的bean名稱相同就自動裝配) byType按類型自動匹配 (即要裝配的bean中的屬性類型和配置中的bean的類型相同就會自動裝配,如UserService類中的屬性類型和userDAO的bean類型相同就自動裝配) --> <bean id="user" class="com.zk.myspring.User" autowire="default"> </bean> </beans>
五.使用註解
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config></context:annotation-config> </beans>
六.掃描包名
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="com.bjsxt"></context:component-scan> </beans>