什么是Spring的注入:
spring的注入是指在启动spring容器加载Bean配置的时候,完成对对变量的赋值行为。常见的spring注入的方式有两种,分别是设值注入和构造注入。
IOC在加载的时候会扫描XML文件里面的Bean的相关配置,然后为这些Bean进行实例化(创建Bean)。所谓注入就是在创建的过程中完成对成员变量的赋值
打个比方,假如在A类里面引入了一个B类声明了一个B类的变量b,注入就是在IOC容器初始化A的时候就把b的变量进行赋值。
1,集合注入
public class MyCollection { private String[] array; private List<String> list; private Set<String> set; private Properties properties; private Map<String,String> map; @Override public String toString() { return "MyCollection{" + "array=" + Arrays.toString(array) + ", list=" + list + ", set=" + set + ", properties=" + properties + ", map=" + map + '}'; } public String[] getArray() { return array; } public void setArray(String[] array) { this.array = array; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } public Set<String> getSet() { return set; } public void setSet(Set<String> set) { this.set = set; } public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } }
配置文件内容
<bean id="collection" class="cn.demo.MyCollection"> <property name="array"> <array> <value>足球</value> <value>篮球</value> </array> </property> <property name="list"> <list> <value>李小龙</value> <value>成龙</value> </list> </property> <property name="map"> <map> <entry key="S1"> <value>李</value> </entry> <entry key="S2"> <value>迟</value> </entry> <entry key="S3"> <value>原</value> </entry> </map> </property> <property name="set"> <set> <value>C#</value> <value>Java</value> </set> </property> <property name="properties"> <props> <prop key="1">s1</prop> <prop key="2">s2</prop> <prop key="3">s3</prop> </props> </property> </bean>
2,使用p命名空间注入
这里不写类了,直接xml文件配置
(注:需要引入p的依赖)
xmlns:p="http://www.springframework.org/schema/p"
<bean id="car" class="cn.demo.Car"> <property name="color" value="黄色"></property> <property name="type" value="OFO"></property> </bean> <bean id="stu" class="cn.demo.Stu" p:name="柴" p:age="21" p:car-ref="car"></bean>
3,构造注入
<bean id="stu" class="cn.demo.Stu">
<constructor-arg index="0" value="柴光亚"></constructor-arg>
<constructor-arg index="1" value="21"></constructor-arg>
</bean>