Spring入门

一:Spring 简介

1.Spring的处理开销非常的小,并且是非侵入式的(允许在应用系统中自由选择和组装Spring框架的各个功能模块,并且不强制要求应用系统的类必须从Spring框架的系统API的某个类来继承或者实现某个接口),

2.Spring提倡使用依赖注入(IoC)来实现耦合,当我们需要bean对象时,从Spring容器中获得,而不是通过以前的new 方式来实例化对象。降低耦合。

3.Spring是一个容器,它包含并且管理系统对象的生命周期和配置。

二:IoC容器

1.bean工厂(BeanFactory)

2.Application Context(上下文)

这两种容器都能实现IoC,他们将系统的配置和依赖关系从代码中独立出来。但二者也有不同,前者在加载时,会将所有的bean组件实例化,需要更多的系统开销,但是在后期运行时就会比较快了。后者只有在我们用到这个对象时,才会去实例化。

三:Spring小实例

1.创建应用接口

package com.wode.spring.hello
public
interface ISayHello{ void say(); }

2.创建应用接口实现类

package com.wode.spring.hello
public
class SayHelloImpl implements ISayHello{ private String msg; public SayHelloImpl(){}; public void say(){ System.out.println(msg); } public void setMsg(String msg){ this.msg=msg; } }

3.创建Spring的配置文件

<beans>
    <bean id="sayHello" class="com.wode.spring.hello.SayHelloImpl">
         <property name="msg">
            <value>hello world<value>
         <property>
    <bean>
<beans>

一个<bean>元素其实就是代表了一个Java类。id是Spring所认识的唯一的标识符,也代表了sayHelloBean的名字,class表示它的全路径。由于sayHelloBean中提供了set方法,其中的value就是通过调用这个方法进行赋值,这种方法又叫set注入。


4.创建测试类

public class sayHelloWorld{
      public static void main(String[] args)
           BeanFactory fac=new XmlBeanFactory(new FileSyatemResource("spring.xml"));
           ISayHello s=(ISayHello) fac.getBean("sayHello");
}

上面所有代码可以看出,我们没有并没有在类中去new对象,而是通过反射将配置文件加载到容器中,容器将xml文件中配置的bean生成Java对象,将一个字符串通过set注入到对象属性中。在测试类中,BeanFactory的getBean方法得到SayHelloImpl实现类的引用。这个小实例是Spring中使用和配置一个类的基本知识。

四:Spring的核心1——IoC(控制反转,依赖注入)

优点. 因为对象生成是在xml中完成,当我们需要更换实现子类时只需要到xml中修改即可。

最基本的Java技术:反射。IoC不是一种技术,而是一个解决组件间依赖关系,配置和生命周期的设计模式。

1.BeanFactory采用了工厂设计模式,创建和分发各种类型的bean。最常见的是使用XmlBeanFactory.例如:

ISayHello   s=(ISayHello )new XmlBeanFactory(new FileInputStream("spring.xml"))

2.应用上下文(ApplicationContext)
在他的所有实现类中,我们一般用到2个类:ClassPathXmlApplication 和FileSystemXmlApplicationContext

在上面两种容器中,我们用到最多的是第二种,因为他提供了更多的功能。

3.装配Bean

<bean id="xm" class="com.wode.map">  这仅仅是在xml文件中定义了一个bean。

下面我们将进行注入设置。通常的方法有2种:set注入和构造器注入。

原文地址:https://www.cnblogs.com/Kevin-Ma/p/5686790.html