Spring - 核心模块

1. 什么是Spring

Spring 是一套开源的企业级开发框架,主要用于开发java和构建java ee平台的web应用。

2. Spring框架模块有哪些?

  1. core module
  2. bean module
  3. context module
  4. expression language module
  5. jdbc module
  6. orm module
  7. oxm module
  8. java messaging service module
  9. transaction module
  10. web module
  11. web-servlet module
  12. web struts module
  13. web portlet module

3. 核心模块是什么?

Spring 核心模块是Ioc container和beans,context和beans两个包是组成spring Ioc container的基础。

org.springframework.beans
org.springframework.context

~.context.ApplicationContext 接口表示Spring的容器,负责启动,配置,和装载beans。容器通过读取配置元文件,创建装配完整的应用。

4. 配置元文件metadata是什么?

metadata有三种表现形式,XML,java注解和java 代码。
它叙述组成应用的类(POJO)的定义,还有类与类之间的依赖关系。

java注解和java代码两种配置方式需要少量的XML申明支持即可
使用ApplicationContext在操作POJOs时,需要创造类的实例
ClassPathXmlApplicationContext 或 FileSystemXmlApplicationContext
或者WebXmlApplicationContext

5. 如何创建容器实例?

ApplicationContext context = new ClassPathXmlApplicationContext("service.xml","daos.xml");

代码如上,我们创建实例时,构造器的参数就是xml的配置文件的名称字符串。

6. 如何使用容器取得Bean?

使用方法T getBean(String name,Class<T> requiredType),可以取得beans实例
例如:

UserService service = context.getBean("userService",UserService.class);

7. 如何用@Bean注解代替XML配置metadata?

@Bean是方法层的Java代码注解,模拟XML配置和中的<bean/>元素,
@Bean可以用在一个注解了@Configuration 或 @Component 的类中
比如:

@Configuration
public class AppConfig {

    @Bean
    public TransferServiceImpl transferService() {
        return new TransferServiceImpl();
    }
}

上面的注解表示创建一个名为transferService的bean,指定为在TransferServiceImpl这个类的实例

8. 请描述下Bean的作用域?

之前提到,metadata是控制beans定义和互相之间依赖关系的清单。
bean的定义可以控制其创造object的作用域。

Spring支持6种作用域,其中4种仅支持web-aware的容器:
1)singleton:默认作用域,一个singleton类的唯一实例被作用于多个引用类,此对象存储在单例beans池的缓存里,每次应用内请求引用此对象时,返回缓存中的同一对象。
单例bean一对多服务,一般不记录状态

Spring中的单例类和GoF设计模式中的单例类概念不同,GoF规定一个加载器ClassLoader只能生成一个特定singleton类的实例,但是Spring的定义将classloader换成了ApplicationContext

2)- @Scope(“prototype”)

每次引用非singleton类都需要new一个该类的bean,即每次getBean时容器都给一个新的bean实例。其生命周期由开发者自行负责。

非单例bean一对一服务,记录状态

3)request/session/application/websocket 域作用于网络应用容器实例(例如XmlWebApplicationContext)

  • @RequestScope or @Scope(“request”)
    用注解方式设定一个bean用于生成请求HTTP request的实例,当请求完成时,该bean销毁
@RequestScope
@Component
public class LoginAction {
    // ...
}

其作用相当于

<bean id="loginAction" class="com.something.LoginAction" scope="request"/>
  • @SessionScope or @Scope(“session”)
    类似Request,当HTTP Session结束时,该Scope的bean销毁

  • @ApplicationScope or @Scope(“application”)
    类似Singleton域,但此Scope下bean全局作用于ServletContext,在ServletContext生命周期内创建和销毁。

  • @Scope(“websocket”)
    此域的bean用于WebSocket协议下通信情景,客户机与服务器HTTP完成握手后,转换TCP连接做双向通信。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值