Spring第一天学习总结

1.配置bean
class:bean的全类名,通过反射的放射在IOC容器中创建Bean,所以要求Bean中必须有一个无参的构造器
id:标记容器中的bean,id是唯一的
2.Spring提供了两种类型的IOC容器实现
其中BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有应用场合都直接使用ApplicationContext而非底层的BeanFactory
3.ApplicationContext的两个主要实现类:
-ClassPathXmlApplicationContext:从类路径下加载配置文件
-FileSystemXmlApplicationContext:从文件系统中加载配置文件
其中ConfigurableApplicationContext扩展与ApplicationContext,新增加两个主要方法:refresh()和close(),让ApplicationContext具有启动、刷新和关闭上下文的能力
WebApplicationContext是专门为WEB应用而准备的,允许从相对于WEB根目录的路径中完成初始化工作
4.使用构造器注入属性可以指定参数的位置和参数的位置
<bean id="car2" class="com.atguigu.bean.car">
   <constructor-arg value="Li" index="0" type="java.lang.String"></constructor-arg>
   <constructor-arg value="Cun" index="1" type="java.lang.String"></constructor-arg>
   <constructor-arg value="274" index="3" type="int"></constructor-arg>
</bean>
5.可以在配置文件中配置单例的集合bean,以供多个bean进行引用,需要导入util命名空间
<util:list id="cars">
    <ref bean="car"/>
<ref bean="car1"/>
</util:list>
6.通过p命名空间为bean的属性赋值,需要先导入p命名空间
<bean id="person" class="yxt.Person" p:name="licun" p:age="23"></bean>
7.使用autowire属性指定自动装配的方式
byName根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的,则进行自动装配,若没有匹配的,则不进行装配
byType根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器有一个以上的类型匹配的bean,则抛出异常
例:autowire="byName/byType"
8.bean配置的继承:使用bean的parent属性指定继承哪个bean的配置
  父Bean可以作为配置模板,也可以作为Bean实例,若只想把父Bean作为模板,可以设置<bean>的abstract属性为true,这样Spring将不会实例化这个Bean
  抽象Bean:bean的abstract属性为true,这样的bean不能被IOC容器实例化,只用来被继承配置
9.Spring中读取src目录下的配置文件,例如db.properties。在Spring 2.5之后,可通过
  <context:property-placeholder location="classpath:db.properties"/>
10.配置bean的后置处理器,不需要配置ID,IOC容器自动识别是一个BeanPostProcessor
   需要实现BeanPostProcessor接口,并具体提供
   Object postProcessBeforeInitiallization(Object bean,String beanName):init-method之前被调用
   Object postProcessAfterInitiallization(Object bean,String beanName):init-method之后被调用
其中,bean:bean实例本身,beanName:IOC容器配置的bean名字;
返回值:是实际上返回给用户的那个Bean,注意:可以在以上两个方法中修改返回的bean,甚至返回一个新的Bean
10.静态工厂方法:直接调用某一个类的静态方法就可以返回Bean的实例
public class StaticCarFactory{
    private static Map<String,Car> cars = new HashMap<String,Car>();
static{
  cars.put("audi",new Car("audi","30"));
  cars.put("audi",new Car("audi","30"));
}
//静态工厂方法
public static Car getCar(String name)
{
  return cars.get(name);
}
}
通过静态工厂方法来配置bean,注意不是配置静态工厂方法实例,而是配置bean实例
<bean id="car1" class="com.yxt.spring.beans.StaticCarFactory"
       factory-method="getCar">
  <constructor-arg value="audi"></constructor>
</bean>
11.实例工厂方法:实例工厂的方法,即先需要创建工厂本身,再调用工厂的实例方法来返回bean的实例
public class InstanceCarFactory{
    private Map<String,Car> cars = null;

public InstanceCarFactory(){
   cars = new HashMap<String,Car>();
cars.put("audi",new Car("audi",3000));
cars.put("ford",new Car("ford",4000));
}
public Car getCar(String brand){
  return car.get(brand);
}
}
配置工厂的实例
<bean id="carFactory" class="com.yxt.factory.InstanceCarFactory"/>
通过实例工厂方法来配置bean
<bean id="car2" factory-bean="carFactory" factory-method="getCar">
   <constructor-arg value="ford"></constructor-arg
</bean>
12.通过FactoryBean来配置Bean,要实现FactoryBean这个借口
public class CarFactoryBean implements FactoryBean<Car>{
    
private String brand;

public void setBrand(String brand){
   this.brand = brand;
}
//返回bean的对象
@Override
public Car getObject() throws Exception{
   return new Car(brand,500000);
}
//返回bean的类型
@Override
public Class<?> getObjectType(){
   return Car.class;
}
@Override
public boolean isSingleton(){
   return true;
}
}
通过FactoryBean来配置Bean的实例
<bean id="car" class="com.yxt.spring.carFactory">
    <property name="brand" value="BMW"></property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值