Spring - 开始 , IOC创建对象,别名 和 创建对象的方式

来源:互联网 发布:盛杰网络课下载 编辑:程序博客网 时间:2024/05/02 04:22

1.开始  

  (1)框架是什么 ?

   使用别人搭好的舞台,你来做表演;
  框架的特点 : 半成品,封装了特定的处理流程和控制逻辑,成熟的不断升级改进的软件;
  框架与类库的区别 :框架一般是封装了逻辑,高内聚的,类库则是松散的工具组合;
  

  (2)为什么使用框架 ?

  软件系统日趋复杂;
  重用度高,开发效率和质量提高;

  软件设计人员要专注于对框架的了解;


           

  (3)Spring 简介

  官网 :spring.io
  一个开源框架,为了解决应用开发复杂性而创建的;
  是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,
  从大小与开销两方面而言Spring都是轻量级的;


  通过控制反转(IOC)的技术达到松耦合的目的;
  提供了面向切面编程的丰富的支持,允许通过分离应用的业务逻辑与系统服务进行内聚性的开发;
  包含并管理应用对象的配置和生命周期,这个意义上市一种容器;
  将简单的组件配置,组合成为复杂的应用,这个意义上市框架;


  Spring是非常活跃的开源框架,它是一个基于Core来构架多层javaEE系统框架,它的主要目的是简化企业开发;
  Spring以一种非侵入式的方式来管理你的代码,Spring提倡最少侵入,这样就意味着你可以适当的时候安装或卸载Spring;

        

    (4)优点 

            简单,方便,快捷,面向接口编程
  

     (5)容器

提供了多种技术的支持 : JMS ,MQ ,UnitTest ..;
AOP(事务管理,日志等);
提供了众多方便的应用辅助类 (JDBC Template等);
对主流应用框架(Hibernate)提供了良好的支持;

     (6) 使用范围:

     构建企业应用 : SpringMvc + Spring + Hibernate/Mybatis/ibatis
单独使用Bean容器,bean管理;
单独使用AOP进行切面处理;
其他的Spring功能,如对消息的支持等;
在其它互联网中的应用;

     (7)面向接口编程

     接口:用于沟通的中介物的抽象化,对应java接口及声明,声明了那些方法是对外公开提高的;(在java8中,接口可以拥有方法体)
 面向接口编程:
        ->结构设计中,分清层次及调用关系,每层只向外层提高一组功能接口,各层间仅依赖接口而非实现类;
->接口实现的变动不影响各层间的调用,这一点在公共服务中尤为重要;
->面向接口编程中的接口是用于隐藏具体实现和实现多态性的组件;


2. IOC 

        控制反转 总结一句话 :  即 把对象的创建交给Spring容器来做;

      (1)创建对象步骤实现

               1)新建helloSpring.java

               

public class HelloSpring {public void hello(){System.out.println("HI Spring , CreateObj!");}}

              2)新建ApplicationContext-createhello.xml 配置bean

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     <bean id="hellospring" class="cn.labelnet.createhello.HelloSpring"></bean>     </beans>

       3)新建ApplicationContext.xml 导入资源

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     <!-- 导入资源 -->     <import resource="/cn/labelnet/createhello/ApplicationContext-createhello.xml"/>     </beans>

    4)测试 : 新建测试类

     启动Spring容器,从Spring容器中将对象取出来,调用方法

private final String BENA_CONTEXT_XML="ApplicationContext.xml";@Testpublic void testHelloWord(){ApplicationContext applicationContext=new ClassPathXmlApplicationContext(BENA_CONTEXT_XML);HelloSpring hs = (HelloSpring) applicationContext.getBean("hellospring");hs.hello();}

     (2)使用别名(Alias)创建对象

             1)新建java类

public class HelloSpring {public void hello(){System.out.println("HI Spring , Alias!");}}

            2)新建配置文件配置bean和别名 alias

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     <!-- id唯一标识,class类的路径 -->     <bean id="hellospring_alias" class="cn.labelnet.alias.HelloSpring"></bean>     <!-- name 为bean的id -->     <alias name="hellospring_alias" alias="hi_alias"/>     </beans>

            3)测试

@Testpublic void testHelloWordAlias(){ApplicationContext applicationContext=new ClassPathXmlApplicationContext(BENA_CONTEXT_XML);HelloSpring hs = (HelloSpring) applicationContext.getBean("hi_alias");hs.hello();}


3.spring容器创建对象的方式

    (1) 默认是调用默认的构造函数;

    (2)利用静态工厂创建 factory-mehtod属性;

     spring调用工厂方法产生对象,但是真正创建对象还是要自己写;
 说明:spring配置文件中,只要是一个bean就会为该bean创建对象;
 

     (3)实例工厂方法,配置 factory-bean 属性;


    (4)实例

           1)新建helloword类

<span style="font-family:Comic Sans MS;font-size:18px;">public class HelloSpring {public HelloSpring() {        System.out.println("It's Default 构造函数!");}public void hello(){System.out.println("HI Spring , 默认构造函数方式!");}}</span>


          2)新建工厂类

  

public class HelloSpringFactory {public static HelloSpring getInstance(){return new HelloSpring();} public void hello(){System.out.println("HI Spring , 默认构造函数方式!");}}


           3)新建配置

<span style="font-family:Comic Sans MS;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     <!-- id唯一标识,class类的路径 -->     <bean id="hellospring_default_type" class="cn.labelnet.createtype.HelloSpring"></bean>          <!-- factory-method : 添加工厂方法方法名 -->     <bean id="hellospring_factory" class="cn.labelnet.createtype.HelloSpringFactory" factory-method="getInstance"></bean>          </beans></span>


         4)总配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     <!-- 导入资源 -->     <import resource="/cn/labelnet/alias/ApplicationContext-Alias.xml"/>     <import resource="/cn/labelnet/createhello/ApplicationContext-createhello.xml"/>     <import resource="/cn/labelnet/createtype/ApplicationContext-createType.xml"/>     </beans>


       5)测试

@Testpublic void testHelloWordFactoryType(){ApplicationContext applicationContext=new ClassPathXmlApplicationContext(BENA_CONTEXT_XML);HelloSpring hs = (HelloSpring) applicationContext.getBean("hellospring_factory");hs.hello();}


      6)结果

                      


4.总结

    刚刚开始学习Spring知识,还未了解更多,与mybatis相比,在IOC配置文件上和Mapper配置有相似之处;

    Demo免积分下载 :http://download.csdn.net/detail/lablenet/9376525


0 0
原创粉丝点击