We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
package com.java1234.entity; public class Dog { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.java1234.entity; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class People { private int id; private String name; private int age; private Dog dog; private List<String> hobbies=new ArrayList<String>(); private Set<String> loves=new HashSet<String>(); private Map<String,String> works=new HashMap<String,String>(); private Properties addresses=new Properties(); public People() { super(); } public People(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public Set<String> getLoves() { return loves; } public void setLoves(Set<String> loves) { this.loves = loves; } public List<String> getHobbies() { return hobbies; } public void setHobbies(List<String> hobbies) { this.hobbies = hobbies; } public Map<String, String> getWorks() { return works; } public void setWorks(Map<String, String> works) { this.works = works; } public Properties getAddresses() { return addresses; } public void setAddresses(Properties addresses) { this.addresses = addresses; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "People [id=" + id + ", name=" + name + ", age=" + age + ", dog=" + dog + ", hobbies=" + hobbies + ", loves=" + loves + ", works=" + works + ", addresses=" + addresses + "]"; } }
来看bean
最简单的,注入基本类型。
<bean id="people1" class="com.java1234.entity.People"> <property name="id" value="1"></property> <property name="name" value="张三"></property> <property name="age" value="11"></property> </bean>
我们给people2注入的不是普通的属性,是一个bean——dog1。 ref="dog1"表示引用的是一个bean,不再是value。 这是spring管理的bean之间的嵌套。
ref="dog1"
<bean id="dog1" class="com.java1234.entity.Dog"> <property name="name" value="Jack"></property> </bean> <bean id="people2" class="com.java1234.entity.People"> <property name="id" value="1"></property> <property name="name" value="张三"></property> <property name="age" value="11"></property> <property name="dog" ref="dog1"></property> </bean>
现在这个dog1即可以被people1引用也可以被people2引用,我们现在要一个新的狗,只能被一个people引用。 我们直接在bean内部注入属性。这个“内部”顾名思义,很好理解。
<bean id="people3" class="com.java1234.entity.People"> <property name="id" value="1"></property> <property name="name" value="张三"></property> <property name="age" value="11"></property> <property name="dog"> <bean class="com.java1234.entity.Dog"> <property name="name" value="Tom"></property> </bean> </property> </bean>
假如说一个人没有狗。 属性dog内部直接是null。 (注意空指针异常)
<bean id="people4" class="com.java1234.entity.People"> <property name="id" value="1"></property> <property name="name" value="张三"></property> <property name="age" value="11"></property> <property name="dog"> <null></null> </property> </bean>
dog.name是直接级联到了dog对象的name属性,而不像我们之前需要注入一个dog的bean。 需要注意我们在people类中必须要自己new一个dog实例,不然没有dog,显然直接去设置dog.name会有空指针异常,因为实际上相当于需要调用dog的set方法。
<bean id="people5" class="com.java1234.entity.People"> <property name="id" value="1"></property> <property name="name" value="张三"></property> <property name="age" value="11"></property> <property name="dog.name" value="Jack2"></property> </bean>
我们注入的属性是集合类型,比如list、set、map、properties。 在配置文件中看起来还是比较清晰的。
<bean id="people6" class="com.java1234.entity.People"> <property name="id" value="1"></property> <property name="name" value="蔡徐坤"></property> <property name="age" value="11"></property> <property name="dog" ref="dog1"></property> <property name="hobbies"> <list> <value>唱歌</value> <value>跳舞</value> </list> </property> <property name="loves"> <set> <value>Rap</value> <value>打篮球</value> </set> </property> <property name="works"> <map> <entry> <key><value>上午</value></key> <value>写代码</value> </entry> <entry> <key><value>下午</value></key> <value>测试代码</value> </entry> </map> </property> <property name="addresses"> <props> <prop key="address1">aaaaa</prop> <prop key="address2">bbbbb</prop> </props> </property> </bean>
最后是测试代码,OK。
public class T { private ApplicationContext ac; @Before public void setUp() throws Exception { ac=new ClassPathXmlApplicationContext("beans.xml"); } // 基本类型值 @Test public void test1() { People people=(People)ac.getBean("people1"); System.out.println(people); } // 注入bean @Test public void test2() { People people=(People)ac.getBean("people2"); System.out.println(people); } // 内部bean @Test public void test3() { People people=(People)ac.getBean("people3"); System.out.println(people); } // 注入null @Test public void test4() { People people=(People)ac.getBean("people4"); System.out.println(people); } // 级联属性 @Test public void test5() { People people=(People)ac.getBean("people5"); System.out.println(people); } // 注入集合 @Test public void test6() { People people=(People)ac.getBean("people6"); System.out.println(people); } }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Spring注入参数
来看bean
1. 注入基本类型值
最简单的,注入基本类型。
2. 注入bean
我们给people2注入的不是普通的属性,是一个bean——dog1。
ref="dog1"
表示引用的是一个bean,不再是value。这是spring管理的bean之间的嵌套。
3. 内部bean注入
现在这个dog1即可以被people1引用也可以被people2引用,我们现在要一个新的狗,只能被一个people引用。
我们直接在bean内部注入属性。这个“内部”顾名思义,很好理解。
4. null值
假如说一个人没有狗。
属性dog内部直接是null。
(注意空指针异常)
5. 级联属性
dog.name是直接级联到了dog对象的name属性,而不像我们之前需要注入一个dog的bean。
需要注意我们在people类中必须要自己new一个dog实例,不然没有dog,显然直接去设置dog.name会有空指针异常,因为实际上相当于需要调用dog的set方法。
6. 集合类型属性
我们注入的属性是集合类型,比如list、set、map、properties。
在配置文件中看起来还是比较清晰的。
最后是测试代码,OK。
The text was updated successfully, but these errors were encountered: