1、导入jar
1.1、基本类包:四个核心包 一个日志包(commons-logging)
2、在src下新建applicationContext.xml
2.1 文件名称和路径自定义
2.2 记住Spring容器ApplicationContext, applicationContext.xml 配置的信息最终存储到ApplicationContext容器中
2.3 Spring配置文件是基于schema
2.3.1 schema文件扩展名 .xsd
2.3.2 把schema理解成DTD的升级版
2.3.2.1 比DTD具备更好的扩张性
2.3.3 每次引入一个xsd文件是一个namespace(xmlns)
2.4 配置文件中只需要引入基本schema
2.4.1 通过<bean/>创建对象
2.4.2 默认情况下,配置文件被加载时创建对象
<?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.xsd"> <!-- id表示获取到对象标识 Class哪个类的对象 --> <bean id="peo" class="com.bjsxt.pojo.People"></bean> </beans>
3、编写测试方法
3.1 getBean("<bean>标签id值",返回值类型) 如果没有第二个参数默认是obejct
3.2 getBeanDefinitionNames() ,Spring容器中目前所有管理的所有的对象
1 public class Test { 2 public static void main(String[] args) { 3 /*People pe=new People();*/ 4 5 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); 6 People peop = ac.getBean("peo",People.class); 7 System.out.println(peop); 8 9 // String[] names = ac.getBeanDefinitionNames(); 10 // for(String str:names){ 11 // System.out.println(str); 12 } 13 14 }
4、Spring创建对象的三种方式
1 通过构造方法创建
1.1 无参构造创建:默认情况
1.2 有参构造创建:需要明确配置
1.2.1 需要在类中提供有参构造方法
1.2.2 在applicationContext.xml 中设置调用哪个构造方法创建对象
1.2.2.1 如果设定的条件匹配多个构造方法执行最后的构造方法
1.2.2.2 index:参数的索引,从0开始
1.2.2.3 name:参数名
1.2.2.4 type:类型(区分开关键字和封装类int 和Integer)
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 <!-- id表示获取到对象标识 Class哪个类的对象 --> 6 <bean id="peo" class="com.bjsxt.pojo.People"> 7 <constructor-arg index="0" value="阿旭" ></constructor-arg> 8 <constructor-arg index="1" value="21"></constructor-arg> 9 </bean> 10 </beans>
2 实例工厂
2.1 工厂设计模式:帮助创建类对象,一个工厂可以生产多个对象
2.2 实例工厂:需要先创建工厂,才能生产对象
我这里是简单实例,还可以单例工厂,抽象工厂,,,,
public class CreatePeopleFactory { public People newInstance(){ return new People("测试22",22); } }
2.3 在applicationContext.xml中配置工厂对象和需要创建的对象
<bean id="factory" class="com.bjsxt.pojo.CreatePeopleFactory"></bean>
<bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>
3 静态工厂
3.1 不需要创建工厂,快速创建对象
3.2 实现步骤
3.2.1 编写一个静态工厂(在方法上添加static)
public class CreatePeopleFactory { /** * 静态工厂 */ public static People newInstance(){ return new People("测试33",23); } }
3.2.2 在applicationContext.xml中配置工厂的方法
<bean id="peo2" class="com.bjsxt.pojo.CreatePeopleFactory" factory-method="newInstance"></bean>
5、如何给Bean的属性赋值(注入)
1、通过构造方法设置值
2、设置注入(通过set方式)
2.1 如果属性是基本数据类型或String等简单数据类型
<bean id="peo" class="com.bjsxt.pojo.People"> <property name="name" value="阿旭521"></property> <property name="age" value="521"></property> </bean>
2.1.1 等效于
<bean id="peo" class="com.bjsxt.pojo.People">
<property name="name"><value>"阿旭522"</value></property>
<property name="age"><value>522</value></property>
</bean>
2.2 如果属性是Set<?>,通过这种方式注入, List<?>一样(如果list就只有一个值,可以使用value=进行赋值)
1 <bean id="peo" class="com.bjsxt.pojo.People"> 2 <property name="name"><value>"阿旭522"</value></property> 3 <property name="age"><value>522</value></property> 4 <property name="sets"> 5 <set> 6 <value>1</value> 7 <value>2</value> 8 <value>3</value> 9 <value>4</value> 10 </set> 11 </property> 12 </bean> 13
2.3 如果属性是数组通过这种方式注入,String[]
<property name="strs"> <array> <value>1</value> <value>2</value> <value>3</value> </array> </property>
2.3.1 如果数组只有一个值,可以使用value进行赋值
<property name="strs" value="测试"> </property>
2.4 如果属性是Map<?,?>通过这种方式
<property name="maps" > <map> <entry key="a" value="xu"></entry> <entry key="b" value="wei"></entry> </map> </property>
2.5 如果属性是 Properties类型 通过这种方式注入
<property name="demo"> <props> <prop key="key"> value </prop> <prop key="key1"> value1 </prop> </props> </property>