1、特殊符号类型
通过CDATA
<bean id="user" class="com.cjy.User">
<property name="uname">
<value><![CDATA[<<cjy>>]]></value>
</property>
</bean>
输出结果
2、注入对象类型
(1)外部级联
① 创建类
public class Userservice {
UserDaoImpl userDao;
public UserDaoImpl getUserDao() {
return userDao;
}
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
public void update(){
System.out.println("Service update");
userDao.update();
}
}
public class UserDaoImpl implements UserDao{
private String DaoId;
public void setDaoId(String daoId) {
DaoId = daoId;
}
@Override
public void update() {
System.out.println("Dao update"+DaoId);
}
}
②配置类
<bean id="userService" class="com.cjy.sping5.Userservice">
<property name="userDao" ref="userDao"> </property>
</bean>
<bean id="userDao" class="com.cjy.sping5.UserDaoImpl">
<property name="daoId" value="1997"> </property>
</bean>
③创建对象并测试
ApplicationContext context= new ClassPathXmlApplicationContext("bean2.xml");
Userservice userservice= context.getBean("userService", Userservice.class);
System.out.println(userservice);
userservice.update();
(2)内部级联
主要就是XML文件有差异。
<bean id="userService" class="com.cjy.sping5.Userservice">
<property name="userDao" >
<bean id="userDao" class="com.cjy.sping5.UserDaoImpl">
<property name="daoId" value="1997"> </property>
</bean>
</property>
</bean>
还有一种特殊的赋值,通过外部注的对象在内部对其进行修改,但类中必须存在修改对象的getter方法。即UserServices类中必须存在userDao对象的getter方法。
public UserDaoImpl getUserDao() {
return userDao;
}
<bean id="userService" class="com.cjy.sping5.Userservice">
<property name="userDao" ref="userDao"> </property>
<property name="userDao.daoId" value="1998"></property>
</bean>
<bean id="userDao" class="com.cjy.sping5.UserDaoImpl">
<property name="daoId" value="1997"> </property>
</bean>
通过这样配置,最终userDao的daoId的值就为1998.
3、注入数组、List、Map类型
基本步骤如下
public class Stu {
private List<String> name;
private String[] hobby;
private Set<String> course;
private Map<String,String > maps;
private List<Book> books;
public void setBooks(List<Book> books) {
this.books = books;
}
public void setName(List<String> name) {
this.name = name;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public void setCourse(Set<String> course) {
this.course = course;
}
public void setMaps(Map<String, String> maps) {
this.maps = maps;
}
public void check()
{
System.out.println(name);
System.out.println(course);
System.out.println(Arrays.toString(hobby));
System.out.println(maps);
System.out.println(books);
}
}
public class Book {
private String name;
private int price;
public void setName(String name) {
this.name = name;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
方法一:标签内创建List
<bean id="stu" class="com.cjy.List.Stu">
<property name="name">
<list>
<value>蔡健雅</value>
<value>cjy</value>
</list>
</property>
<property name="course">
<set>
<value>软件工程</value>
<value>计算机网络</value>
<value>软件工程</value>
</set>
</property>
<property name="hobby">
<array>
<value>羽毛球</value>
<value>学习</value>
<value>Sing</value>
</array>
</property>
<property name="maps">
<map>
<entry key="cjy" value="男"> </entry>
<entry key="lwz" value="girl"> </entry>
</map>
</property>
<property name="books">
<list>
<ref bean="book1"></ref>
<ref bean="book2"></ref>
</list>
</property>
</bean>
<bean id="book1" class="com.cjy.List.Book">
<property name="name" value="Java"> </property>
<property name="price" value="29"> </property>
</bean>
<bean id="book2" class="com.cjy.List.Book">
<property name="name" value="Python"> </property>
<property name="price" value="22"> </property>
</bean>
方法二:创建公共List(需要引入新的名称空间)
xmlns:util="http://www.springframework.org/schema/util"
<util:list id="bookStore">
<ref bean="book1"/>
<ref bean="book2"/>
</util:list>
<bean id="stu" class="com.cjy.List.Stu">
<property name="name">
<list>
<value>常继友</value>
<value>cjy</value>
</list>
</property>
<property name="course">
<set>
<value>软件工程</value>
<value>计算机网络</value>
<value>软件工程</value>
</set>
</property>
<property name="hobby">
<array>
<value>羽毛球</value>
<value>学习</value>
<value>Sing</value>
</array>
</property>
<property name="maps">
<map>
<entry key="cjy" value="男"> </entry>
<entry key="lwz" value="girl"> </entry>
</map>
</property>
<property name="books" ref="bookStore">
</property>
</bean>
<bean id="book1" class="com.cjy.List.Book">
<property name="name" value="Java"> </property>
<property name="price" value="29"> </property>
</bean>
<bean id="book2" class="com.cjy.List.Book">
<property name="name" value="Python"> </property>
<property name="price" value="22"> </property>
</bean>
测试方法与结果:
public void testStu()
{
ApplicationContext context= new ClassPathXmlApplicationContext("bean.xml");
Stu user= context.getBean("stu", Stu.class);
user.check();
}