属性值注入:就是给属性赋值
public class Account implements Serializable {
private int aid;
private double balance;
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
@Override
public String toString() {
return "Account{" +
"aid=" + aid +
", balance=" + balance +
‘}‘;
}
}
public class User implements Serializable {
private String name;
private int age;
//引用数据类型
private Account account;
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;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
@Override
public String toString() {
return "User{" +
"name=‘" + name + ‘\‘‘ +
", age=" + age +
", account=" + account +
‘}‘;
}
}
? 将User类交给Spring容器管理,在xml配置文件中添加<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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 将User类交由Spring容器管理-->
<bean id="user" class="com.yd.pojo.User">
<!-- 给对象属性注入值-->
<!-- 相当于:user.setName("王二");-->
<property name="name" value="王二"></property>
<!-- 相当于:user.setAge(20);-->
<property name="age" value="20"></property>
<!-- 给引用类型属性注入值-->
<property name="account" ref="account"></property>
</bean>
<bean id="account" class="com.yd.pojo.Account">
<property name="aid" value="101"></property>
<property name="balance" value="1888"></property>
</bean>
</beans>
@Test
public void getUser(){
//获取spring配置文件生成的对象
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
//通过bean的id,获取bean对象
User user = (User)ac.getBean("user");
System.out.println(user);
}
运行结果:
使用
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.yd.pojo.User">
<constructor-arg name="name" value="小丽"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="account" ref="account"></constructor-arg>
</bean>
<bean id="account" class="com.yd.pojo.Account">
<constructor-arg name="aid" value="201"></constructor-arg>
<constructor-arg name="balance" value="9999.05"></constructor-arg>
</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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--autowire="byType" 根据类型自动注入-->
<bean id="user" class="com.yd.pojo.User" autowire="byType">
<constructor-arg name="name" value="小丽"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
</bean>
<bean id="account" class="com.yd.pojo.Account">
<constructor-arg name="aid" value="201"></constructor-arg>
<constructor-arg name="balance" value="8888.08"></constructor-arg>
</bean>
</beans>
运行1.2代码结果:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--autowire="byName" 根据属性名自动注入-->
<bean id="user" class="com.yd.pojo.User" autowire="byName">
<property name="name" value="小王"></property>
<property name="age" value="23"></property>
</bean>
<bean id="account" class="com.yd.pojo.Account">
<constructor-arg name="aid" value="201"></constructor-arg>
<constructor-arg name="balance" value="8888.08"></constructor-arg>
</bean>
</beans>
运行1.2代码结果:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="byType">
<bean id="user" class="com.yd.pojo.User">
<property name="name" value="小李"></property>
<property name="age" value="30"></property>
</bean>
<bean id="account" class="com.yd.pojo.Account">
<constructor-arg name="aid" value="301"></constructor-arg>
<constructor-arg name="balance" value="6666.08"></constructor-arg>
</bean>
</beans>
运行1.2代码结果:
**** 注意:注意区分空指针和null字符串!
<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
https://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="byName">
<bean id="data" class="com.yd.pojo.Data">
<property name="array">
<array>
<value>苏州</value>
<value>无锡</value>
<value>常州</value>
</array>
</property>
<property name="list">
<list>
<value>蒸羊羔</value>
<value>蒸熊掌</value>
<value>蒸鹿尾</value>
</list>
</property>
<property name="set">
<set>
<value>北京</value>
<value>北京</value>
<value>天津</value>
<value>河北</value>
</set>
</property>
<property name="map">
<map>
<entry key="101" value="张三"/>
<entry key="102" value="李四"/>
<entry key="103" value="王五"/>
</map>
</property>
<property name="properties">
<props>
<prop key="user">root</prop>
<prop key="pwd">123456</prop>
<prop key="sex">male</prop>
</props>
</property>
</bean>
</beans>
@Test
public void getData(){
//获取spring配置文件生成的对象
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
Data data = (Data) ac.getBean("data");
System.out.println(data);
}
注意:1. set集合存放不重复的数据
? 2. default-autowire="byName",若是byType,properties会自动注入系统默认属性值(系统配置信息等)
原文:https://www.cnblogs.com/soft-test/p/14876630.html