秋招准备-后台框架-Spring

Spring

 

  • 核心概念

1.什么是IoC

    IoC(Invertion of Control),控制反转,解耦合,轻量级。

    具体上可以说,以前我们通过在程序里主动创建对象实例实现组件间的依赖关系,会造成组件间互相耦合。

    而IoC将实现组件关系交由外部容器来管理,即由容器在运行期将组件间的某种依赖关系动态注入到组件中。

    通俗来讲,以前我们要一个什么东西,完全要自己造,要原料,要方法,要实际操作等等。而现在,则是我们提出要一个东西,然后IoC的容器就给我们直接送过来了。

 

2.什么是DI

    DI(Dependency Injection),依赖注入,即将服务注入到使用它的地方。对象只提供普通的方法让容器去决定依赖关系。

    容器全权负责组建的装配,它会把符合依赖关系的对象通过属性(setter()),或是构造器传递给需要的对象。

 

3.什么是Bean

    pojo和JavaBean有相同有不同:

    1.pojo(plain old java object):

    pojo是一个简单的、普通的Java对象它包含业务逻辑处理货持久化逻辑等,但不是JavaBean,不具有任何特殊角色,不继承或不实现任何其他Java框架的类或接口。

    pojo可以认为是一个中间对象,可以转化为PO、DTO、VO

    2.JavaBean

    JavaBean是一个遵循特定写法的Java类,是一种Java语言编写的可重用组件,它的方法命名,构造及行为必须符合特定的约定:

    <1>这个类必须具有一个公共的(public)无参构造函数;
    <2>所有属性私有化(private);
    <3>私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一定的命名规范。 
    <4>这个类应是可序列化的。(比如可以实现Serializable 接口,用于实现bean的持久性)

    JavaBean在Java EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象(内省机制),并且通过反射那些遵循命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。

    3.Bean 

    即豆子,含义是可重用Java组件,所谓组件就是一个由可以自行进行内部管理的一个或几个类所组成、外界不了解其内部信息和运行方式的群体。使用它的对象只能通过接口来操作。

 

 

  • 常用对象

1.ApplicationContext

    取得方式

    1.本地文件    2.ClassPath    3.Web应用中依赖servlet或Listener

    2.如下,返回一个ApplicationContext对象

    new ClassPathXmlApplicationContext(
                new String[] { "applicationContext.xml" }    )

    然后可以通过context对象的getBean("id")取得bean对象。

2.BeanFactory

 

 

 

  • Bean

1.通过xml文件注册,注入值和对象。


    
    


通过在xml中写入,完成对该pojo的注册,当IoC容器加载的时候,会将Bean实例化,然后到使用的时候,再通过容器的方法来获得Bean的实例对象。

id唯一标识这个bean对象,class是pojo类的全限名。
在中的name中填入pojo类的属性名,value后跟相应的值。
如果是注入对象的话,则用ref,后跟对象对应类型的Bean的Id。

 

2.注入值的对象,可以分设值注入与构造器注入。

    设值注入如下

.xml

    


pojo
class Bean
{
    String name;
    public void setName(String name)
    {    this.name=name;    }
}

    构造器注入如下

.xml

    


pojo
class Bean
{
    String name;
    public Bean(String name);
    {    this.name=name;    }
}

    不管是设值注入还是构造器注入,在xml设值属性的name那里,都应该与实际pojo类的属性名一致,不然会注入失败。

 

3.注解注入

    先说两个配置:

    (.xml中)--设置后,IoC容器能够识别在pojo类的成员变量和成员方法上的注解。

  对于类MyInformation,自主设置id和默认设置id,及取得bean的方式 @Repository("lin") class MyInformation{} //通过context取得bean context.getBean("lin"); @Repository class MyInformation //通过context取得bean context.getBean("myInformation"); 及默认会将该类的类名,首字母小写后,设为bean的id。

 

    2.对于完成了注册的Bean来说(xml或注解),可以通过注解自动装载Bean属性。

    自动装载常用的是三种方式。

    在中,加入一个属性default-autowire="值",值可以是<1>byName <2>byType <3>constructor。

    <1>当设置default-autowire为byName时,对象注入不需要再写下的,也不需要别的注解。当注册完Bean后,如果该Bean有依赖的类,就会根据其属性名,作为id,去IoC容器中寻找与其匹配的Bean,如果找得则注入。

    <2>设置为byType时,如果有依赖类,则是根据该类的类型,去容器里搜索,如果有多个结果会报错,如果单个结果,则按该结果完成对象注入。

    <3>和<2>类似,都是按照类从容器中匹配的,只是是按值注入和构造器注入的区别。

    而@Autowired则是按照类型来进行自动装载的。

    当@Autowired标记某个成员变量或者setter()方法时,会在容器中根据该变量类型去找匹配Bean,找得即注入。

    搭配使用:

 

@Required

@Qualifier

@Resource

@Order

@Scope

 

装载List和Map对象

 

@Configuration

@Bean

@ImportResource

@Value

 

bean的生命周期和作用域

-----7.22未完

你可能感兴趣的:(秋招准备)