Spring的IOC部分

2.1. IOC的简介(常见面试题)
     IOC 含义:
    * 全称: Inverse Of Control: 控制反转,指的是将 bean 对象的创建、及对象关联关 系的维护由原来我们自己去创建、自己去维护对象之间的关联关系,反转给 spring 的容 器来创建对象,及维护对象之间的关联关系。
   
    *IOC 作用 : 解决了上层建筑严重依赖下层建筑的问题,实现了上层建筑对下层建筑的控制。
   
    *IOC 底层原理 :xml 解析 + 反射 + 容器 + 设计模式
 
2.2. 获取容器的三种方式
   /************************************************************
获取容器的三种方式:
    *第一种:ClassPathXmlApplicationContext:默认是去 src 目录下找配置文件
    *第二种:FileSystemXmlApplicationContext:默认是去本地磁盘的具体位置去找对应的 配置文件
    *第三种:XmlBeanFactory:已废弃
************************************************************/
 
 
2.3. 从容器中获取bean对象的两种方式和区别
 
从容器中获取bean对象的两种方式:
    第一种:通过字节码的方式
    第二种:通过容器中bean对象的id值或者name值的方式
区别:3个
    第一个:参数不同,一个是字符串类型,一个是字节码类型
    第二个:返回值类型不同,一个是Object类型,一个自定义的类型
    第三个:如果参数是字节码类型,要求容器中必须有该字节码类型的唯一bean对象 如果没有,报错:NoSuchBeanDefinitionException; 如果容器中有该类型的唯一bean对象,正常获取; 如果容器中有该类型的多个bean对象,报 NoUniqueBeanDefinitionException
 
public void test02(){
        ApplicationContext   context =             newClassPathXmlApplicationContext("applicationContext.xml");
        //Actor actor = context.getBean(Actor.class) ;
       Object actor = context.getBean("actor");
       System.out.println(actor);
}
2.4. DI(依赖注入)
       DI: 全称: Dependency Injection: 依赖注入 , 说白了,就是给对象的属性赋值。
  IOC 是一种控制反转的思想,具体实现就是 DI
  UserServlet 类:
                 public class UserServlet {
        private UserService userService;
        public void success(){
        userService.success();
        }
        public UserService getUserService() {
        return userService;
        }
        public void setUserService(UserService userService) {
        this.userService = userService;
        }
        }
 
         UserService 类:
     public class UserService
        {
                       public void success(){
                       System.out.println("成功执行了.......");
        }
        }
 
         applicationContext.xml
     <bean
                id="userService" class="com.atguigu.service.UserService"></bean>
          <bean    class="com.atguigu.servlet.UserServlet">
                <property name="userService" ref="userService"></property>
         </bean>
 
         测试代码:
  public void test02(){
                ApplicationContext
        context =new ClassPathXmlApplicationContext("applicationContext.xml");
                UserServlet bean = context.getBean(UserServlet.class);
                bean.success();
     }
 
2.5. 分模块配置
 
         实际开发中,一般 Spring 框架都会整合其它框架一起使用,比如:后边学 Redis 时候, 会用 Spring 框架整合 Redis ,再学习其它框架的时候,还会用 Spring 框架整合其它框 架,随着 spring 框架整合其它框架的增多,如果把所有的配置信息都放在 spring 的配 置文件中,势必会造成 Spring 的配置文件过于臃肿,所以我们一般会把 Spring 框架整
合其它框架的信息单独抽取到一个配置文件中,然后在 Spring 的配置文件中通过 <import resource=””> 引入其它配置文件即可。
    < import resource ="applicationContext_redis.xml" ></ import >
 
2.6. 内部bean和外部bean
 
 
2.7. 容器中bean对象的创建时机、底层原理、是否单例
   
 
2.8. 容器中创建对象的三种方式
 
Actor 类: // 提供属性的 getter setter toString 方法
 
静态工厂:
 
实例工厂:
 
 
2.9. 给对象的属性赋值的三种方式
 
 
代码: applicationContext.xml 文件
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值