spring学习笔记——多文件的配置
多配置优势
优点:1每个文件的大小比一个文件要小很多,效率高
2.避免多人竞争带来的冲突
例如:如果你的项目有多个模块(相关的功能在一起),一个模块一个配置文件
如学生考勤系统:
学生考勤一个模块一个配置文件
学生成绩一个配置文件
对文件的分配方式
1.按功能模块分,一个模块一个文件
2.按类的功能,数据库相关配置一个文件,做事务的功能一个配置文件,左service功能的一个配置文件等
1.依赖注入:pom.xml
2.创建一个Student类
public class Student {
private String name;
private int age;
public Student(){
System.out.println(name+age);
}
//定义一个应用类型school
private school sch;
public void setSch(school sch) {
this.sch = sch;
}
public void setName(String name) {
this.name = name;
System.out.println(name);
}
public void setAge(int age) {
this.age = age;
System.out.println(age);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sc=" + sch +
'}';
}
}
3.创建一个School类
public class school
{
private String school;
private String address;
public void setSchool(String school) {
this.school = school;
}
public void setAddress(String addreess)
{
this.address = addreess;
}
@Override
public String toString() {
return "school{" +
"school='" + school + '\'' +
", address='" + address + '\'' +
'}';
}
}
4.spring配置文件
spring-school.xml文件
<!--声明所有school的bean的配置文件-->
<!--byName-->
<!--声明scool类java对象其中的sch:引用类型的属性名-->
<bean id="sch" class="com.springproject.bao6.school" >
<property name="school" value="清华大学"/>
<property name="address" value="成都市"/>
</bean>
sprig-student.xml文件
<!--studnet模块所有bean的声明-->
<!--声明student对象stu-->
<!--byName 将Student类中的应用类型的所有属性通过autowire给属性赋值-->
<bean id="stu" class="com.springproject.bao6.Student" autowire="byName">
<property name="name" value="张三"/>
<property name="age" value="40"/>
</bean>
total.xml文件
!--
包含关系的配置文件:
(1)spring-total表示主配置文件,用来包含其它的配置文件的,主配置文件一般不用来定义对象
(2)语法:
<import resource ="其它配置文件的路径"/>
关键字:classpath:表示类路劲(class文件所在的目录),告诉spring到哪去加载读取文件
-->
<!--加载的是文件列表-->
<!--方法一多个配置文件:这种方式不需要建立下面项目结构图片中的total.xml文件-->
<import resource ="classpath:templates/bao6/spring-school.xml"/>
<import resource ="classpath:templates/bao6/spring-student.xml"/>
<!--方法二 包含关系的通配符的使用 “*”,表示任意字符(该方式需要建立下面项目结构图片中的total.xml文件且命名不能是spring-total.xml ,total.xml的作用是关联两个配置文件,会在该包下去扫描spring开头的文件,入果如命名成了spring-total.xml会一直扫描,不会结束) -->
<import resource ="classpath:templates/bao6/spring-*.xml"/>
5.测试类
@Test
public void test02(){
//1.指定spring配置的文件名
String config="templates/bao6/total.xml";
//2.创建表示spring容器的对象ac,
ApplicationContext ac1 = new ClassPathXmlApplicationContext(config);//创建了一个容器对象ac。
//从spring容器中getBean("配置文件中的bean的id")获取java对象stu,并且把它转成希望的类型
Student stu1=(Student) ac1.getBean("stu");
System.out.println(stu1);
}
6.项目结构