命名空间一般放置在 XML 文件的开始标签中,如下最基本的 Spring XML 配置文件中,xmlns / xmlns:xsi / xsi:schemaLocation 三项便是命名空间。
<?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
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
</beans>
作用:命名空间的作用是自动为 XML 标签补全前缀,避免标签命名冲突
- p命名空间是set注入的一种实现方式
- c命名空间是构造器注入的一种方式
注入条件:
- 在spring的配置文件的顶部加上一句xmlns:c=“http://www.springframework.org/schema/c”(如果是p的就把c该p)
- 提供构造方法(这用无参构造方法)
案例
p命名与c命名
pojo【注意:这里没有有参构造器!】
package com.hyq.pojo;
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;
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
注意看有没有加入上面所说的条件已及加入的具体位置
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--p c 命名空间-->
<!--P(属性: properties)命名空间 , 属性依然要设置set方法-->
<!-- <bean id="user" class="com.hyq.pojo.User" p:name="胡奕奇" p:age="18"/>-->
<!--C(构造: Constructor)命名空间 , 属性依然要设置set方法-->
<bean id="user" class="com.hyq.pojo.User" scope="prototype" c:name="胡奕奇" c:age="18"/>
</beans>
这里演示一个c命名空间的注入:
Bean
在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 。
Spring IoC 容器中具有以下几种作用域:
- 基本作用域singleton(单例)
- prototype(多例),
- Web 作用域(reqeust、session、globalsession)
- 自定义作用域
当一个bean的作用域为Singleton,那么Spring IoC容器中只会存在一个共享的bean实例;
当一个bean的作用域为Prototype,表示一个bean定义对应多个对象实例;
当一个bean的作用域为Request,表示在一次HTTP请求中,一个bean定义对应一个实例;
当一个bean的作用域为Session,表示在一个HTTP Session中,一个bean定义对应一个实例;