`
Scliu123
  • 浏览: 39931 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring核心技术----IoC的Bean基本管理2

阅读更多

在前面的程序中,以Bean的Setter方法完成依赖注入.   Spring鼓励的是Setter Injection(set方法注入) 当也可以使用Constructor injection(构造方法注入),要使用Setter或 Constructor来注入依赖关系视需求而定。

 

 Constructor injection(构造方法注入)的示例:

============

HelloBean.java

-------------------------------------------------------

package only;

public class HelloBean {
   public String name;
   public String helloWord;
 
   public HelloBean(String name,String helloword){
            this.name=name;
            this.helloWord=helloword;
   }

   public String getHelloWord() {
             return helloWord;
   }

   public void setHelloWord(String helloWord) {
              this.helloWord = helloWord;
   }

   public String getName() {
              return name;
   }

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

===================

applicationContext.xml

------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 

<!--在这里使用<constructor-arg >标签来表示将使用Contructpr Injection(构造函数注入)-->

<!--index属性就是指定对象将注入至构造函数中的哪一个位置的参数,参数的顺序指定中第一个参数用“0”表示,第二个用“1”,依此类推-->
 <bean id="helloBean" class="only.HelloBean">
   <constructor-arg index="0">
         <value>Justin</value>
   </constructor-arg>


   <constructor-arg index="1">
        
 <value>Hello</value>
   </constructor-arg>
 </bean>
</beans>

==============

SpringDemo .java

-------------------------------------------------

package only;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class SpringDemo {

 /**
  * @param args
  */
 public static void main(String[] args) {
          ApplicationContext context=
               new FileSystemXmlApplicationContext("src/applicationContext.xml");
           HelloBean hello=(HelloBean)context.getBean("helloBean");
          System.out.print("name:");
          System.out.println(hello.getName());
          System.out.print("Word:");
          System.out.println(hello.getHelloWord());
   }
}

 

    至于要使用Constructor或Setter方法来完成依赖注入这个问题,其实就等于在讨论一个古老的问题:要在对象建立时就准备好所有的资源,或是在对象建立好后,在使用setter方法来进行设定。

    使用Constructor的好处之一是,可以在构造对象的同时一并完成依赖关系的建立,对象一建立后,它与其他对象的依赖关系也就准备好了,但如果建立的对象关系很多,使用Constructor injection会在构造方法上留下一长串的参数,且不易记忆,这时使用setter方法会是一个不错的选择,另一方面,setter方法具有明确的方法名称可以了解注入的对象是什么,像setxxx()这样的名称,会比Contructor上某个参数位置的索引代表某个对象来得好,当结合IDE的方法提示功能使用时,编程会更方便且有效率。

    然而使用setter方法时,由于提供有setxxx()方法,因此不能保证相关的数据成员或资源在执行时期不会被更改设定,因为程序开发人员可能执行setxxx()方法来设定相关属性,所以如果想要让一些数据成员或资源变为只读或是私有,使用Constructor injection会是个简单的选择。

分享到:
评论

相关推荐

    springIOC核心组件分析.vsdx

    spring-core:核心模块 依赖注入IOC和DI的最基本实现 spring-beans:Bean工厂与装配 spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和...

    Java-Spring-SpringIoC容器-SpringIoC的学习

    Java-Spring-SpringIoC容器-SpringIoC的学习 SpringIoC容器的学习笔记 主要介绍了IoC容器工作原理以及如何配置IoC容器 通过&lt;bean&gt;标签和注解配置容器

    spring-aop-5.1.0.RELEASE.jar

    spring-**core**-4.3.6.RELEASE.jar :包含spring框架基本的核心工具类,spring其他组件都要用到这个包里的类,其他组件的基本核心 spring-**beans**-4.3.6.RELEASE.jar:所有应用都要用到的jar包,它包含访问配置...

    spring-framework-5.1.2.RELEASE.rar

    spring-beans-5.1.8.RELEASE.jar //配置、创建、管理Bean,负责Ioc、DI spring-context-5.1.8.RELEASE.jar //提供在基础IoC上的扩展服务 spring-expression-5.1.8.RELEASE.jar //提供对Spring表达式语言的支持

    spring-framework-5.0.4.RELEASEspring-framework-5.0.4.RELEASE

    Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃...它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transaction Management

    spring Ioc bean 容器

    spring容易对于bean的配置,以及spring ioc技术的实现的讲解!

    spring最小依赖包

    4) spring-beans-3.2.8.RELEASE.jar SpringIoC(依赖注入)的基础实现 5) spring-context-3.2.8.RELEASE.jar Spring提供在基础IoC功能上的扩展服务 6) spring-core-3.2.8.RELEASE.jar Spring的核心包 7) ...

    详解Spring框架---IOC装配Bean

    本篇文章主要介绍了详解Spring框架---IOC装配Bean,提供了三种方式实例化Bean,具有一定的参考价值,有兴趣的可以了解一下。

    spring-struts1-strust2-hibernate 核心包介绍

    这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行 Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC /DI支持,引入spring-core.jar及...

    spring-beans-4.0.0.RELEASE.jar

    spring-beans-4.0.0.RELEASE.jar这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI...

    maven-spring-ioc

    spring IoC, 使用配置文件方式配置Bean的实例化和依赖注入

    撸一撸Spring Framework-IoC-BeanDefinition(csdn)————程序.pdf

    撸一撸Spring Framework-IoC-BeanDefinition(csdn)————程序

    spring IOC反射装载bean

    spring基于xml配置加载bean 的demo 了解spring的反射机制

    Spring框架核心--入门适合初学者

    Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发 Spring以一种非侵入式的方式来管理你的代码, Spring提倡”最少侵入”,这也就意味着你可以适当的时候...

    spring-framework-3.1.0.RELEASE.zip

    Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。... 1、核心容器 2、Spring 上下文 3、Spring AOP 4、Spring DAO 5、Spring ORM 6、Spring Web 模块 7、Spring MVC 框架

    spring4.1核心包

    配置文件 创建和管理bean。 4.spring-context-4.1.1.RELEASE.jar 在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的...

    Spring IOC Bean标签属性介绍(教学视频+源代码)

    Spring IOC Bean标签属性介绍 0.Bean标签属性介绍 1.0 新建一个Maven工程 1.1 pom.xml 1.2 实体类JavaBean 1.2.1 User类 1.3 当Scope="singleton"时 1.4 当 Scope="singleton" 且 lazy-init="true" 时 1.5 当scope=...

    Spring简单介绍,AOP IOC Bean 常用注解

    Spring简单介绍,AOP IOC Bean 常用注解

    B-spring-ioc-container-homework:IoC容器基础知识Spring课程

    Spring IoC容器基础作业 作业描述 阅读以下问题描述,按要求实现。 问题1 分支:p1-从这里开始 主观题:@Component已经可以支持声明一个bean了,为什么还要再弄个@Bean出来? 问题2 分支:p2-从这里开始 ...

    spring-security-4.2.5.RELEASE-source.zip

    它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制...

Global site tag (gtag.js) - Google Analytics