Spring【p命名和c命名空间注入】

p命名空间注入

核心:通过属性注入!

关键是在原有的xml配置文件的头部标签内添加下面的语句:

xmlns:p="http://www.springframework.org/schema/p"

1、编写3个实体类

这里只介绍三种实体类的基本属性,需要自己实现getter和setter方法以及无参和有参构造。

User

对象名 User
属性1 name(String)
属性2 age(int)

Address

对象名 Address
属性1 name(String)

Student

对象名 Student
属性1 name(String)
属性2 age(int)
属性3 address(Address)

2、编写配置文件

配置文件的文件名随意。




    
    

    
    
        
        
    

    
    

3、测试

@Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");

        System.out.println("========普通类型===========");

        //User user = (User) context.getBean("user");
        User user = context.getBean("user", User.class);    //指定反射的对象类型 不用强制转换
        System.out.println(user.toString());

        System.out.println("========复杂类型===========");
        Address address = context.getBean("address", Address.class);
        address.setAddress("湖北恩施");//通过set方法修改student对象属性的值
        Student student = context.getBean("student",Student.class);
        System.out.println(student);
    }

运行结果: 

========普通类型===========
User{name='燕双鹰', age=25}
========复杂类型===========
Student{name='李大喜', age=18, address=Address{address='湖北恩施'}}

c命空间注入

核心:通过构造器注入,需要有参构造器!

关键是在原有的xml配置文件的头部标签内添加下面的语句:

xmlns:p="http://www.springframework.org/schema/c"

1、实体类

继续用上面的实体类

2、 配置xml

        这里我们Student的属性address不再用引用类型注入了,而是直接赋值,因为Address只有一个参数name,而且我们已经写好了name的set方法,spring会帮我们自动通过set方法将参数传递给name属性。




    
    

3、测试

        Student stu = context.getBean("stu",Student.class);
        System.out.println(stu);

 运行结果:

Student{name='李元芳', age=19, address=Address{address='太原'}}

你可能感兴趣的:(Spring,spring,java,后端)