zoukankan      html  css  js  c++  java
  • Spring的配置分别是xml和java style

    # Spring-IoC
    Spring配置有两种方式xml和java style


    ## Spring
    · spring的IoC(控制反转)就是一个工厂模式变种,<br/>
    · spring核心就是IoC容器,实现这个容器的接口BeanFactory,BeanFactory是最核心的、最纯粹的<br/>
    方法: <br/>
    getBean() <br/>
    实现类: <br/>
    ApplicationContext <br/>


    · 简单工厂

    public class ServiceFactory() {
    public Object getServiceObject(String name) {

    if("bs".equals(name)) {
    A a = new A();
    B b = new b();
    MyBatiscConnection conn = new MyBatiscConnection();
    BookService bookservice = new BookService();

    //同通过setter的方式来确定他们的关系是如何的
    //B对象包含A对象
    b.setA(a);
    //MyBatiscConnection对象包B对象
    conn.setB(b);
    //**********__``````````__**********
    bookService.setConn(conn);
    log.setConn(conn);
    bookservice.setLogger(log);
    return bookService;

    }
    }

    }



    <li> 在调用的时候就变得了简单了</li>

    public class Test () {

    public static void main(String[] arge) {
    ServiceFactory sf = new ServiceFactory();

    BookService bookservice = sf.getSerivceObject("bs");
    //然后在调用bookservice的某个方法
    }
    }
    <li> 小结:</li>

    我们在中间加了一层,虽然不用在调用的时候,创建很多的对象。但在工厂模式中代码类增加了,
    我们在维护的时变得困难了。

    <li> 所以后面出现了:XML文件的形式来更清晰的描述,类的创建和类与类之间的关系</li>

    <!--之前是命令的形式,xml是描述的形式 -->
    <xml>
    <bean id="a" class="com.wgc.entity.A">
    </bean>
    <bean id="b" class="com.wgc.entity.B">
    <property name="a" ref="a"/>
    </bean>
    <bean id="conn" class="org...MyBatiscConntion">
    <property name="b" ref="b"/>
    </bean>
    <bean id="log" class="org...LogUitl">
    <property name="conn" ref="conn"/>
    </bean>
    <bean id="bookService" class="com...BookService">
    <property name="conn" ref="conn"/>
    <property name="log" ref="log"/>
    </bean>
    </xml>


    <li> 结论</li>
    使用xml的文件中Bean标签配置,更加清晰的描述出类与类之间的关系。

    <li>门面模式:</li>
    例子:有一个工厂有很多的部门,要买东西的时候我们不可能一个一个部门去卖,所以把所以部门组合在一起,在去卖。


    spring有三种方式描述
    1、@Bean java类方法<br/>
    2、<bean> xml<br/>
    3、开启扫描的模式
    @Component <br/>
    @ComponentScan(basePackages="learning.spring") <br/>
    @ImportResource(locations = "learning/spring/my-spring.xml") <br/>
    @Service <br/>
    @Controller: 这个注解@ControllerAdvice只作用在加上@Controller的类上<br/>
    @Repository <br/>

    4、是java代码写spring的配置

    要在类的头部加上@Configuration注解
    @Configuration
    如果要在java类上加这个注解就是相当xml文件中<beans>


    工厂模式与IoC的区别:

    工厂模式在调用时才创建对象;<br/>
    IoC容器在启动就创建了所有的对象(可以加属性lazy-init="true":意思是这个对象没有那么重要不着急创建),
    还有所有的对象在刚刚开始都是单例模式创建了(可以加scope="prototype"修改:一般我们不会这么做,因为每次都创建一个新的对象,对内存的消耗是非常大的)


    denpend-on 定义顺序(属性)
    parent 定义继承(属性)
    scope 定义初始化策略(属性)
    lazy 延迟初始化 (属性lazy-init)
    alias 定义别名(标签)
    import 引入其他的定义文件(标签)


    例子: <import resource="文件名"/>
    <alias name="rabbits" alias="ADO"/>
    或是<alias name="ADO" alias="rabbits"/>

  • 相关阅读:
    自定义返回模型
    【读书笔记】C#高级编程 第二十五章 事务处理
    【读书笔记】C#高级编程 第二十四章 文件和注册表操作
    【读书笔记】C#高级编程 第二十二章 安全性
    【读书笔记】C#高级编程 第二十一章 任务、线程和同步
    【读书笔记】C#高级编程 第二十章 诊断
    【读书笔记】C#高级编程 第十九章 程序集
    【读书笔记】C#高级编程 第十六章 错误和异常
    【读书笔记】C#高级编程 第十五章 反射
    【读书笔记】C#高级编程 第十四章 内存管理和指针
  • 原文地址:https://www.cnblogs.com/YouAreABug/p/10117153.html
Copyright © 2011-2022 走看看