Spring框架核心概念(一)

一、实例化Bean的方式

  1、通过构造函数实例化:通过这种方法,配置文件写法如下

1 <bean id="exampleBean" class="com.mazhuo.ExampleBean">
2 </bean>

  2、使用静态工厂方法实例化:

    当使用此方法时,除了要设置class的值,还需要设置factory-method属性来指定创建Bean实例的方法。配置文件写法如下:

1 <bean id="exampleBean" class="com.mazhuo.ExampleBean" factory-methord="creatBean">
2 </bean>

    对应的类应用如下方式定义:

1 public class ExampleBean{
2     private static ExampleBean exampleBean = new ExampleBean();
3     private ExampleBean(){}
4     public static ExampleBean creatBean(){
5          return exampleBean;
6     }
7 }

  3、使用工厂实例方法实例化:

    此方法与第2个方法类似,使用这种方法时,class属性设置为空,而factory-method属性的值必须指定当前(或其祖先)容器中包含工厂方法的bean名称,而该工厂bean的工厂方法本身必须通过factory-method属性来指定。其中,一个工厂类中可以有多个工厂方法。配置文件写法如下:

1 <!-- 工厂Bean,包含creatBean()方法 -->
2 <bean id="serviceLocator" class="com.mazhuo.ServiceLocator">
3         <!-- 其他依赖项的注入 -->
4 </bean>
5
6 <!-- 通过工厂Bean创建Bean -->
7 <bean id="clientService" factory-bean="serviceLocator" factory-methord="creatBean">
8 </bean>

      以上配置文件中的类的定义:

1 public class ServiceLocator {
2     private static ClientService clientService = new ClientService();
3     private ServiceLocator(){}
4     public ClientService creatBean() {
5         return clientService;
6     }
7 }

二、Bean注入方式

  1、基于构造函数:

    通过调用具有多个参数的构造函数的容器来完成的,每个参数标识依赖关系,这与调用静态工厂方法来构造bean几乎是等效的。

1 public class SimpleMovieLister {
2     //SimpleMovieLister依赖于MovieFinder
3     private MovieFinder movieFinder;
4     //Spring容器可以通过构造函数注入MovieFinder
5     public SimpleMovieLister(MovieFinder movieFinder) {
6         this.movieFinder = movieFinder;
7     }
8 }

       在上述代码中,配置文件中需要使用<constructor-arg>元素来指定构造函数参数或者索引类型。

    开发者也可以通过参数的名称来去除二义性,但需要注意的是,用这种方法工作的代码必须启用调试标记编译,开发者也可以使用@ConstructorProperties标注来显示声明构造函数的名称。参考代码如下

1 public class ExampleBean {
2     private int year;
3     private String name;
4     @ConstructorProperties({"year","name"})
5     public ExampleBean(int year, String name){
6         this.name = name;
7         this.year = year;
8     }
9 }

  2、基于setter方法:

    通过调用无参数构造函数或无参数静态工厂方法来实例化bean后,通过调用setter方法完成的。

三、自动装配

  1、@configuration:

    用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义。

    注意:@Configuration注解的配置类有如下要求:@Configuration不可以是final类型;@Configuration不可以是匿名类;嵌套的configuration必须是静态类。

  2、@Bean注解注册bean,同时可以指定初始化和销毁方法

     @Bean(name="testBean",initMethod="start",destroyMethod="cleanUp")

  3、spring中bean的scope属性,有如下5种类型:

singleton表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例。
           prototype表示每次获得bean都会生成一个新的对象。
       request表示在一次http请求内有效(只适用于web应用)。
       session表示在一个用户会话内有效(只适用于web应用)。
       globalSession表示在全局会话内有效(只适用于web应用)。

  4、@Configuation等价于<Beans></Beans>

     @Bean等价于<Bean></Bean>

    @ComponentScan等价于<context:component-scan base-package="com.dxz.demo"/>

原文地址:https://www.cnblogs.com/ma-zhuo/p/11065753.html

时间: 2024-10-07 19:44:01

Spring框架核心概念(一)的相关文章

Spring框架基本概念之POJO,EJB,DI,AOP,IOO,JCA

1.POJO(Plain Old Java Object),一个正规的Java对象(不是JavaBean,EntityBean等),该对象也不担当任何的特殊的角色,也不实现任何Java框架指定的接口. POJO不是我们开始认为的JavaBean,当然更不是EJB,它不依赖于框架(即继承或实现某些框架类或接口).例如:Struts1中的Action和ActionForm当然不属于POJO了,而在Struts2中的Action由于可以不继承任何的接口,所以在这种情况下Action是POJO,但是St

spring技术核心概念纪要

一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述了一些要点,并配合一些代码样例,这有助于快速理解 spring 框架. 二.spring架构 核心容器层 Core 模块 提供了框架的基本组成部分,包括 IoC 及依赖注入功能. Bean 模块 实现 Bean 管理,包括自动装配机制等功能: 其中BeanFactory是一个工厂模式的实现. Con

12、Spring框架核心

?* Struts与Hibernate可以做什么事? Struts, Mvc中控制层解决方案 可以进行请求数据自动封装.类型转换.文件上传.效验- Hibernate, 持久层的解决方案: 可以做到, 把对象保存到数据库, 从数据库中取出的是对象. ?* 传统的开发模式 基于mvc模式进行项目开发: 基于mvc的项目框架结构: Entity / dao / service / action // 1. 实体类 class User{ } //2. dao class UserDao{ .. 访问

Spring Framework核心概念之Bean生命周期管理

目录 Spring Bean的生命周期 相关接口的分类 测试SpringBean生命周期的Demo程序 小结 Spring Bean的生命周期 Spring容器既Application或者WebApplication会在管理Bean的时候:为了尽可能的把自己内部的东西机制暴露出来给用户使用,所以在Bean创建的过程中加了很多机制,通过所谓的"处理器"Processor暴露出来,然后处理器都有自己的顺序,我们需要做的就是定义好处理器的逻辑,然后注册到Sprinhg容器中,Spring就会

spring 框架基础概念理解

一. IOC 控制反转 概念解释:当我需要一个资源时,容器已经帮我准备好,我只需要接受就可以. // 加载 IOC 容器 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml") 当执行以上代码时,容器就已经加载好了所有资源.获取资源的方式如下. HelloWorld helloworld = (HelloWorld)ac.getBean("helloWorld&q

spring 框架的核心总结

最近在学习Java语言,从而也学习了SpringFramework 这个大名鼎鼎的框架.从而做一些的记录. 题外话: 学习过几种不同的语言,后来知道所有的编程语言里所有的概念翻来覆去都是一样的事物,只是它们被不同的术语所描述,加上大部分中文翻译,又扯上一些专有名词,让一些本来简单的概念变得复制而深奥.不知是因人的有限,还是那些书籍的作者有意为之,其实很多的东西本来都是很简单了,这些奇怪的名词反而让初学者糊涂起来.如果有刚开始学习编程的同学看到这里,也请注意了,不要被一些概念和名字带偏了,究其本质

十分钟完成 spring 核心概念扫盲

一.背景 springframework 从 2.5 版本发展至今,期间已经发生了非常多的修正及优化.最初认为 spring 框架是一个非常轻量级的东西,轻量到你几乎认识不到必须使用它的理由.. 然而它又是那么的通用,几乎所有的流行框架如 持久层的 hibernate.表示层的 struts 都能跟它进行整合.但最终的结果是 spring 能整合的东西越来越多,逐渐的替代了其他的框架. 就比如 现在最火的 springboot,从Web控制层到持久层,任务调度.AOP 都已经被 spring 体

Spring框架初识(一)

1. Spring框架概述 1.1 简介 Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架.   1.2 优点 方便解耦,简

Spring记录之Spring的基本概念

Spring的基本概念 Spring 框架本身没有强制使用任何特别的编程模式.从设计上看,Spring有很大自由度,像个容器,可以整合其它许多框架组件.Spring的核心功能DI/IOC,AOP,适用于任何JAVA应用.学习当中的设计思想,对Java编程会有帮助. 1. Spring优势 Spring的优势主要有6点: 有效组织中间层对象.能有效整合现有框架如Struts2,Hibernate,Mybatis,Shiro,Lucene等等. 实现了真正的AOP面向接口编程,组件之间高度解耦(de