Spring Bean (IOC)

       Bean(类)包装的是一个 Object,把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
 IOC容器

IOC:  ioc强调由第三方容器根据客户的需求,创建对象,然后根据客户供的方法将对象传递给客户 
容器的本质: 它就是一个map集合,键:id  值:容器创建的对象
DI:  强调第三方创建对象以后  通过什么方法将对象传递过去SpringIOC

XML文件配置方式

一、Bean的创建、获取

1、  
        
        
    
    id:对该Bean的唯一标识
    class:类的全路径
2、通过中间类的静态方法创建
    
     factory-method:通过中间类的哪个函数来创建对象
3、通过中间类的非静态方法创建
    首先注册中间类
    
    //依据中间类来创建对象
    
    factory-bean:引用中间类的对象
    factory-method:中间类构建对象的方法名称
4、获取Bean对象
    //启动IOC容器  
    //ClassPathXmpApplicationContext(String... configLocations);
    ApplicationContext ac = new ClassPathXmlApplicationContext("xmlPath:从src开始");
    Class class = (Class) ac.getBean("CLassID");

二、bean的继承

    含义:一个Bean可以继承另一个bean的属性
    
    
    
    
    
    
    
    parent:父亲的ID

三、Bean的单例和多例模式

    scope="prototype" 多例
    默认情况下时单例

四、Bean的创建的时间

    lazy-init="true" 懒汉式 
    lazy-init="false" 饿汉式
    在单例模式下,lazy-init的设置才有用,默认情况下是饿汉式,即当IOC创建后立马创建相关对象
    在多例模式下,lazy-init的设置没有用,直到getBean("ID");时才创建对象

五、Spring DI
强调的是给Bean的属赋值。通常将Bean的属性以Set的方式赋值给对象的属性

1、属性:  基本数据类型
    
        /
        /
    
2、属性:  类类型
    
    
3、属性:  集合
    
        
            value1
            value2
        
    

    
        
            value1
            value2
        
    

    
        
            
                value1
            
            
                value2
            
        
    

注解方式

用注解来向Spring容器中注册Bean,需要在applicationCOntext.xml注册





    当该包下的某个类的头上带有注解{@Component/@Repository/@Service/Controller}就会将该
类作为Bean注册到Spring容器中
@Controller    对应表现层的Bean,即Action
@Service       对应业务层Bean
@Repository    对应数据访问层Bean
@Component     各层均适用(不推荐)
这四个注解形式在默认情况下,生成的Bean的ID(Key)为首字母小写的类名
也可指定名字eg:@Controller(value="XXX")
@Scope("prototype")只当该Bean可以产生多个对象,默认是单例

注入: 成员变量

@Resource(name="ClassID") 指定已经注册Bean对象的ID,默认按属性名来查找Bean(ByName)
@Autowired  依据成员对量的类型在IOC容器中查找Bean对象(ByType)

XML文件配置和注解形式各有优缺点。

当需要注册的Bean对象来自第三方时,只能通过XML文件配置来实现

扩展:
辅助
Spring Bean的生命周期

你可能感兴趣的:(Spring Bean (IOC))