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

本文介绍了Spring框架的基本概念,包括其特点、优势以及如何使用Spring容器创建和管理对象。通过示例展示了不同方式创建对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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";
	@Test
	public 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)测试

	@Test
	public 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)测试

	@Test
	public 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.youkuaiyun.com/detail/lablenet/9376525


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值