Spring配置

1. 通过xml文件进行配置

一般Spring配置文件的名字为applicationContext.xml

通过xml文件启动Spring:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

1.1. 别名

如果添加了别名,我们也可以使用别名获取到这个对象

值得注意的是,使用别名后,原有名字并不会失效

<alias name="fromName" alias="toName"/>

1.2. bean

id:bean的唯一标识符

class:bean对象所对应的全限定名:包名+类名

name:也是别名,而且name可以同时取多个别名,同时支持不同的分隔符

scope:默认为单例模式,即singleton。prototype为多实例模式。

autowire:实现自动装配

<bean id="someClass" class="com.gs.dao.SomeClass" name="n1 n2,n3;n4">
</bean>

bean的作用域

Scope Description
singleton (默认)将每个 Spring IoC 容器的单个 bean 定义范围限定为单个对象实例。
prototype 将单个 bean 定义的作用域限定为任意数量的对象实例。
request 将单个 bean 定义的范围限定为单个 HTTP 请求的生命周期。也就是说,每个 HTTP 请求都有一个在单个 bean 定义后面创建的 bean 实例。仅在可感知网络的 Spring ApplicationContext中有效。
session 将单个 bean 定义的范围限定为 HTTP Session的生命周期。仅在可感知网络的 Spring ApplicationContext上下文中有效。
application 将单个 bean 定义的范围限定为ServletContext的生命周期。仅在可感知网络的 Spring ApplicationContext上下文中有效。
websocket 将单个 bean 定义的范围限定为WebSocket的生命周期。仅在可感知网络的 Spring ApplicationContext上下文中有效。

其中,后四种都在web开发中才需要用到。

scope:默认为单例模式,即singleton(可以不显式定义)。每次调用get获取对象的时候都会返回相同的实例。(多线程并发问题)

<bean id="someClass" class="com.gs.dao.SomeClass" scope="singleton" />

prototype为多实例模式。每次调用get获取对象的时候都会得到一个新的实例。(资源占用问题)

<bean id="someClass" class="com.gs.dao.SomeClass" scope="prototype" />

autowire自动装配

  1. byName自动装配

    byName会自动在容器的上下文中进行查找和自己对象set方法后面的值相对应的bean的id或者name。

    <bean id="someClass" class="com.gs.dao.SomeClass" autowire="byName" />
    

    注意点:需要保证要注入的bean的id或者name需要和注入的属性的set方法后面的值一致。

  2. byType自动装配

    byType会自动在容器的上下文中进行查找和自己对象属性类型相同的beanid。

    <bean id="someClass" class="com.gs.dao.SomeClass" autowire="byType" />
    

    注意点:需要保证要注入的bean的class唯一,并且这个class需要和注入的属性的类型一致。

1.3. import

import,一般用于团队开发使用,可以将多个配置文件,导入合并为一个。

利用import将不同的xml配置文件合并为一个总的。

在使用的时候,直接导入总的配置到程序中就可以了。

<beans>
    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>

2. 通过Java文件进行配置

通过Java文件启动Spring:

ApplicationContext context = new AnnotationConfigApplicationContext(myConfig.class);

JavaConfig是Spring的一个子项目,在Spring4之后成为一个核心功能。

通过Java文件配置,可以完全不使用xml配置,全权交给Java来做。

  1. 配置文件

    package org.gs.config;
    
    import org.gs.pojo.User;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    
    // @Configuration 自身就是一个Component,因此会被Spring托管
    // @Configuration 代表这是一个配置类,就和之前applicationContext.xml一样
    // @Import 可以导入其他配置文件,类似于上文的import标签
    // @ComponentScan(value) 可以开启通过包名扫描注解
    @Configuration
    @Import(myConfig2.class)
    public class myConfig {
    
        // 相当于通过bean标签注册bean到Spring中
        // 方法名相当于这个bean的id
        // 方法的返回值就是这个bean的类型
        @Bean
        public User getUser(){
            return new User();//就是返回要注入到bean的对象
        }
    }
    
  2. 组件

    在实体类的类名添加@Component,类会被Spring接管并注册到容器中。

    //这里这个注解的意思,就是说明这个类被Spring接管,注册到了容器中
    @Component
    public class User {
    }
    
  3. 获取组件

    ApplicationContext context = new AnnotationConfigApplicationContext(myConfig.class);
    User getUser = (User) context.getBean("getUser");
    
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:52

results matching ""

    No results matching ""