zoukankan      html  css  js  c++  java
  • Spring IOC(控制反转)

    控制反转:

      在使用了Spring框架之后对象不在由调用者来创建,而是由Spring容器来创建

      Spring容器会负责控制程序之间的关系而不是由调用者的程序代码直接控制

      这样控制权由应用程序转移到了Spring容器,控制权发生了反转,这就是Spring控制反转

      获得依赖对象的过程被反转了,控制反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入

      于是"控制反转"也叫"依赖注入"(Dependency Injection)简写(DI)所谓的依赖注入,就是由IOC容器在运行期间

      动态的将某种依赖关系注入到对象之中

      所以,依赖注入(DI)和控制反转(IOC)是从不同角度的描述的同一件事情,就是指通过引入IOC容器

      利用依赖关系注入的方式,实现对象之间的解耦

     实例代码:

      1,普通数据类型和集合的注入

          【1】创建user实体类  提供set方法以及构造和toString

          

          【2】编写配置文件

             

        <bean id="user" class="com.bdqn.cn.pojo.User">
             <!-- 通过构造注入 -->
    <!--        <constructor-arg index="0" value="张三"/>
            <constructor-arg index="1">
                <list>
                    <value>list1</value>
                    <value>list2</value>
                </list>
            </constructor-arg>
            <constructor-arg index="2">
                <map>
                    <entry key="hhh" value="哈哈哈"/>
                    <entry key="zzz" value="啧啧啧"/>
                    <entry key="bbb" value="不不不"/>
                </map>
            </constructor-arg>
                    <constructor-arg index="3">
                <set>
                    
                    <value>张三</value>
                    <value>李四</value>
                    <value>王五</value>
                
                </set>
            </constructor-arg>
            <constructor-arg index="4">
            
                <array>
                    
                    <value>aaaaaaaa</value>                
                    <value>bbbbbbbb</value>                
                
                </array>
            
            </constructor-arg> -->
            
            
            
            
            <!-- 通过setter方法注入参数 -->
            <property name="username" value="赵云" />
            <property name="list">
            
                <list>
                    
                    <value>看书</value>
                    <value>学习</value>
                
                </list>
            
            </property>
            <property name="map">
            
                <map>
                    
                    <entry key="guangshou" value="广州" />
                    <entry key="shanghai" value="上海" />
                    <entry key="shenzhen" value="深圳" />
                
                </map>
            
            </property>
            <property name="set">
            
                <set>
                
                    <value>关羽</value>
                    <value>张飞</value>
                    <value>赵云</value>
                    <value>马超</value>
                    <value>黄忠</value>
                
                </set>        
            
            </property>
            <property name="array">
            
                <array>
                    
                    <value>aaaaaaaa</value>
                    <value>bbbbbbbb</value>
                
                </array>
            
            </property>
        </bean>

          【3】编写测试类

          

        2,对象注入

         【1】创建接口和实现类

          

         【2】创建业务层

          

          

    public class UserServiceImpl implements UserService {
        //这里只是声明  没有具体实现
        private UserDao userDao;
        //给userDao传入参数  set方式
    /*    public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }*/
        //构造方法形式
        public UserServiceImpl(UserDao userDao) {
            super();
            this.userDao = userDao;
        }
    
        @Override
        public void say() {
            this.userDao.say();
            System.out.println("UserServiceImpl...");
        }
    
    
    }

           【3】编写配置文件

          

           【4】编写测试类

          

          

  • 相关阅读:
    Oracle spatial、openlayers、geoserver开发地理信息系统总结
    解决Geoserver请求跨域的几种思路,第二种思路用过
    OpenLayers中的球面墨卡托投影
    墨卡托投影、地理坐标系、地面分辨率、地图比例尺
    jQuery Easing 动画效果扩展
    jQuery实现鼠标移上弹出提示框,移出消失
    验证码生成组件--JCaptcha的使用
    jquery validate 验证
    Oracle查询错误分析:ORA-01791:不是SELECTed表达式
    启动tomcat报host-manager does not exist or is not a readable directory异常
  • 原文地址:https://www.cnblogs.com/yz-bky/p/12576753.html
Copyright © 2011-2022 走看看