1. P命名空间 对普通属性直接 p:变量名=值
2.C命名空间 对象有参构造的注入,等同于 构造器 construct-args==c
用法 c:有参变量名1 c:有参变量名2 。。。。。
scope="singleton 单列模式
prototype 原型模式 相对单列模式就比较耗资源 singleton 单列模式 两者对象是一样
用hashcode就可以判断出
3.引用类
package com.yyf.pojo;
public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
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 "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
4.spring配置文件
<?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"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--<!– p命名空间 可以直接注入属性的值,p==property–> 这两种属于扩展方式注入 -->
<bean id="user" class="com.yyf.pojo.User" p:age="18" p:name="杨小法"/>
<!-- c命名空间 可以通过构造器construct-args==c-->
<bean id="user1" class="com.yyf.pojo.User" c:name="狂神" c:age="1" scope="singleton"/>
<!-- <bean id="user1" class="com.yyf.pojo.User" c:name="狂神" c:age="1" scope="prototype"/> prototype 原型模式
此时user 和 user1 两者就是不同的对象,相对单列模式就比较耗资源
singleton 单列模式 两者对象是一样
利用hashcode就可以判断出-->
</beans>
5.测试类
@Test
public void Test(){
ApplicationContext context = new ClassPathXmlApplicationContext ("userbeans.xml");
User user = (User) context.getBean ("user1");
System.out.println (user);
}