10、c命名和p命名空间注入

p命名和c命名注入

官方解释

10、c命名和p命名空间注入

 

User.java :【注意:这里没有有参构造器!】

 public class User {

     private String name;

     private int age;

     public void setName(String name) {

         this.name = name;

    }

     public void setAge(int age) {

         this.age = age;

    }

     @Override

     public String toString() {

         return "User{" +

                 "name='" + name + '\'' +

                 ", age=" + age +

                 '}';

    }

 }

 

//此时没写有参构造器

10、c命名和p命名空间注入

 

1、P命名空间注入 : 需要在头文件中加入约束文件

 导入约束 : xmlns:p="http://www.springframework.org/schema/p"

 <!--P(属性: properties)命名空间 , 属性依然要设置set方法-->

 <bean id="user" class="com.kuang.pojo.User" p:name="狂神" p:age="18"/>

10、c命名和p命名空间注入

 

插曲:

导入junit包

10、c命名和p命名空间注入

插曲end

 

10、c命名和p命名空间注入

注:这里用了User.class就不需要再强转了

 

输出

10、c命名和p命名空间注入

 

 

2、c 命名空间注入 : 需要在头文件中加入约束文件

 导入约束 : xmlns:c="http://www.springframework.org/schema/c"

 <!--C(构造: Constructor)命名空间 , 属性依然要设置set方法-->

 <bean id="user" class="com.kuang.pojo.User" c:name="狂神" c:age="18"/>

10、c命名和p命名空间注入

 

发现问题:爆红了,刚才我们没有写有参构造!

解决:把有参构造器加上,这里也能知道,c 就是所谓的构造器注入!

10、c命名和p命名空间注入

 

测试代码:

 @Test

 public void test02(){

     ApplicationContext context = newClassPathXmlApplicationContext("applicationContext.xml");

     User user = (Usercontext.getBean("user");

     System.out.println(user);

 }

10、c命名和p命名空间注入