一、Bean的配置
1.什么是Spring中的Bean
2.Spring容器支持的两种格式的配置文件
properties文件和xml文件区别:
1、从结构上来说:
.xml文件主要是树形结构。
.properties文件主要是以key-value键值对的形式存在。
2、从灵活程度上来说:
.xml格式的文件要比.properties格式的文件更灵活一些
.properties格式的文件已键值对形式存在,主要就是赋值,而且只能赋值,不能够进行其他的操作。
.xml格式的文件可以有多种操作方法,例如添加一个属性,或者做一些其他的定义等。
3、从使用便捷程度来说:
.properties格式的文件要比.xml文件配置起来简单一些。
配置.properties只需要简单的getProperty(key)方法或者setProperty(key,value)方法就可以读取或者写入内容;
配置.xml文件的时候通常要查看文档,因为配置比较繁琐,花费时间长才可以配置完整。
4、从应用程度上来说:
.properties文件比较适合于小型简单的项目。
.xml文件适合大型复杂的项目,因为它比较灵活。
3.XML的配置
二、Bean的实例化
1.Bean的构造器实例化
在官方文档里 spring-framework-4.3.6.RELEASE\docs\spring-framework-reference\html 目录下找到index.html 找到
7.2.1 Configuration metadata
<?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.3.xsd">
<!--spring-beans-4.3这里的4.3是指明版本号 -->
<bean id="bean1" class="com.lin.instance.contructor.Bean1"></bean>
</beans>
package com.lin.instance.contructor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
//测试类
public class InstanceTest1 {
public static void main(String[] args) {
//定义配置文件路径
String xmlPath="com/lin/instance/contructor/beans1.xml";
//
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
Bean1 bean1=(Bean1) applicationContext.getBean("bean1");//获取xml文件里面的id
System.out.println(bean1);//打印的地址com.lin.instance.contructor.Bean1@3a03464
}
}
附上其他代码
package com.lin.instance.contructor;
public class Bean1 {
}
测试类
package com.lin.instance.contructor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
//测试类
public class InstanceTest1 {
public static void main(String[] args) {
//定义配置文件路径
String xmlPath="com/lin/instance/contructor/beans1.xml";
//
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
Bean1 bean1=(Bean1) applicationContext.getBean("bean1");//获取xml文件里面的id
System.out.println(bean1);//打印的地址com.lin.instance.contructor.Bean1@3a03464
}
}
文件结构
2.Bean的静态工厂实例化
1.创建Bean的实体类
package com.lin.instance.static_factory;
public class Bean2 {
}
2.创建静态工厂类
package com.lin.instance.static_factory;
public class MyBean2Factory {
public static Bean2 createBean2() {
return new Bean2();
}
}
3.配置xml文档
package com.lin.instance.static_factory;
public class MyBean2Factory {
public static Bean2 createBean2() {
return new Bean2();
}
}
4.编写测试类
package com.lin.instance.static_factory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InstanceTest2 {
public static void main(String[] args) {
//定义配置文件路径
String xmlPath="com/lin/instance/static_factory/beans2.xml";
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
Bean2 bean2=(Bean2) applicationContext.getBean("bean2");
System.out.println(bean2);
}
}
3.Bean的实例工厂实例化
1.创建Bean的实体类
package com.lin.instance.factory;
public class Bean3 {
}
2.创建实例工厂类
package com.lin.instance.factory;
public class MyBean3Factory {
public MyBean3Factory() {
System.out.println("bean3工厂实例化");
}
public Bean3 createBean3() {
return new Bean3();
}
}
3.配置xml文档
<?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.3.xsd">
<!--spring-beans-4.3这里的4.3是指明版本号 -->
<!-- 配置工厂 -->
<bean id="myBean3Factory" class="com.lin.instance.factory.MyBean3Factory"></bean>
<!-- 使用factory-bean属性指向配置的实例工厂
使用factory-method属性确定使用工厂中的那个方法
-->
<bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean3"></bean>
</beans>
4.编写测试类
package com.lin.instance.factory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InstanceTest3 {
public static void main(String[] args) {
//制定配置文件路径
String xmlString="com/lin/instance/factory/beans3.xml";
//ApplicationContext在加载配置文件时,对Bean进行实例化
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlString);
System.out.println(applicationContext.getBean("myBean3Factory"));
}
}
整体截图