精华内容
下载资源
问答
  • 8.8.13 返回当前用户会话的应用程序和主机 253 8.8.14 获取当前用户和登录名上下文 253 8.8.15 查看用户连接选项 254 8.9 IDENTITY和uniqueidentifier函数 255 8.9.1 返回最后一个标识值 255 8.9.2 返回...
  • 比较官方的解释是 Spring Bean是事物处理组件类和实体类(POJO)对象的总称,是能够被实例化、能够被spring容器管理的java对象。可以把bean看做是一个组件,这个组件用来具体实现某个业务功能。总结性的讲,Bean就是...

    啥是Spring Bean

    比较官方的解释是 Spring Bean是事物处理组件类和实体类(POJO)对象的总称,是能够被实例化、能够被spring容器管理的java对象。可以把bean看做是一个组件,这个组件用来具体实现某个业务功能。总结性的讲,Bean就是由IOC容器初始化、装配及管理的对象,除此之外,和程序中的其他对象没有区别。

    怎么使用Bean呢

    在spring中bean是由spring容器创建和管理的,各组件之间的依赖关系也是由spring容器管理的,这在很大程度上减少了开发者的工作量。但是你也不是什么都不需要做的,你要告诉spring要创建哪些bean并且如何将这些bean装配在一起。看个图吧:

    今天才知道,原来 Spring的 bean还可以这样装配!

     

    Spring Bean 的装配

    ①基于xml配置装配

    声明一个简单的bean,在xml中可以按照如下形式声明一个bean:

    <bean id=”foo” class="com.test.Foo" >
        <property name=”fooPro” value=”proVal”>
        <property name=”otherObj” ref=”otherObj”>
    </bean>

    这里声明了一个简单的Bean,创建Bean的类由class属性指定(需要全限定类名),id是Bean的唯一标识,如果没有指定id属性的值则取权限定类名作为id,com.test.Foo类的定义如下:

    Public Class Foo{
        private string fooPro;
        private OtherObj otherObj;
        public void setFooPro(string fooPro){
            this.fooPro = fooPro;
        }    public void setOtherObj (OtherObj otherObj){
            this.otherObj = otherObj;
        }                                        …}

    <property>元素实现属性注入,即将“proVal”赋值给com.test.Foo的“fooPro”属性,这里注入的是一个常量值。如果该Bean依赖于另一个Bean,那么使用ref属性代替value属性将所依赖的Bean注入,ref属性的值指向的是依赖的Bean的id。为了让配置文件变得简洁,Spring提供了p-命名空间来替代property元素,作用是相同的,简洁配置如下:

    <bean id=”foo” class="com.test.Foo" p:fooPro=”proVal” p:otherObj-ref=“otherObj” ></bean>

    常量值属性的注入为:p:属性名=”属性值”,Bean属性的注入:p:属性名-ref=”引用的Bean的id”。以上使用的是setter方法注入,Spring还提供了一种构造器注入的方式,简单介绍一下(使用的较少,一般都是用setter注入的形式):

    <bean id=”foo” class="com.test.Foo" >
        <constructor-arg value=”proVal”>
        <constructor-arg ref=”otherObj”>
    </bean>

    属性值的注入是按构造函数中的参数顺序依次赋值的。

    ②基于Java代码装配

    使用Java代码装配首先需要创建一个配置类(JavaConfig)

    @Configuration
    public class FooConf{
        @Bean
        public OtherObj otherObj(){
    	    return new OtherObj();
        }}

    @Configuration表明该类是一个配置类,@Bean注解用于声明一个Bean,@Bean注解的方法通知Spring该方法会返回一个Bean并且会注册为Spring应用上下文的Bean。

    ③基于注解的装配(自动化装配)

    Spring从两个角度实现自动化装配:

    第一步:组件扫描(component scanning),Spring会自动发现应用上下文中所创建的bean。

    第二不步:自动装配( autowiring),Spring自动满足bean之间的依赖。

    创建能被扫描到的Bean:

    @Component
    public class Foo(){
    }

    @Component注解表明该类是一个组件类,它将通知Spring为该类创建一个Bean。那么该如何让Spring去扫描@Component注解的类呢?有两种方式:

    使用@ComponentScan注解启用组件扫描

    @Configuration
    @ComponentScan
    public class FooConf{
    }

    如果没有其他配置的话,@ComponentScan默认会扫描与配置类相同的包,查找带有@Component注解的类,可以使用basePackages属性设置扫描的基础包。

    使用xml启用组件扫描

    在xml配置文件中添加<context:component-scan base-package=”要扫描的基础包” />,作用同@ComponentScan注解。

    @Component注解能够让Foo类注入到Spring容器中,但是如果Foo类依赖于其他类怎么办呢?使用@AutoWried注解。

    @Component
    public class Foo{    //成员变量使用@AutoWired
        @AutoWried    private OtherObj otherObj;                                    ……}@Componentpublic class Foo{    private OtherObj otherObj;    //构造方法使用@AutoWired
        @AutoWried    public Foo (OtherObj otherObj){	    this.otherObj = otherObj;    }}@Componentpublic class Foo{    private OtherObj otherObj;    //Setter方法使用@AutoWired
        @AutoWried    Public void setOtherObj (OtherObj otherObj){	    this.otherObj = otherObj;    }}

    如上,@AutoWried注解能够用在构造器或者setter方法或者成员变量上,作用就是把Foo类依赖的Bean注入进来。

    其实在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性。

    @Resource也可以把Foo类以来的Bean注入进来,但是@AutoWired默认是按类型装配,@Resource是按名字装配。当依赖Bean有多个实现类时,就可以使用@Resource注解装配指定的实现类(@Resource(name="otherObjImpl1")……)。

    作者:加哇er

    链接:https://juejin.im/post/5e814f076fb9a03c6422f576

    来源:掘金

    展开全文
  • 一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。 DTD文件也是一个ASCII的文本文件,后缀名为.dtd。例如:myfile.dtd。 为什么要用DTD文件呢?我的理解是它...
  • C) 包括程序和文档  D) 可独立构成计算机系统 2. 软件工程三要素是(C D)。 A) 技术、方法和工具  B) 方法、工具和过程  C) 方法、对象和类  D) 过程、模型、方法 3. 包含风险分析的软件工程...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    用例只描述参与者系统在交互过程中做些什么,并不描述怎么做。 用例图 关联关系 用例图 泛化关系 用例图 泛化关系 用例图 用例图 用例图 用例用于什么情况? 不知道什么情况不用用例 如果没有用到用例,...
  • asp.net知识库

    2015-06-18 08:45:45
    利用反射实现ASP.NET控件数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...
  • 1.3.1 联机事务处理和决策支持系统数据库 6 1.3.2 开发、测试产品数据库 7 1.4 培训认证 7 1.4.1 培训 7 1.4.2 认证 8 1.4.3 Oracle DBA的资源组织 10 1.4.4 Oracle示例 11 1.4.5 Oracle...
  • Java程序员面试宝典pdf

    热门讨论 2013-02-21 13:06:13
    面试题188 如果你完全不同意你上司的某个要求,你怎么处理 341 16.3 小结 342 第17章 智商类面试题( 教学视频:43分钟) 343 17.1 脑筋急转弯 343 面试题189 美国有多少辆汽车 343 面试题190 下水道的盖子为什么是...
  • java 面试题 总结

    2009-09-16 08:45:34
    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...
  • 33、游标怎么使用:游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。 必须使用游标的SQL语句...
  • java面试宝典

    2013-02-28 16:04:01
    抽象类是否可继承实体类(concrete class)? 12 41、Java 的接口C++的虚类的相同不同处。 12 42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请...
  • 千方百计笔试题大全

    2011-11-30 21:58:33
    抽象类是否可继承实体类(concrete class)? 12 41、Java 的接口C++的虚类的相同不同处。 12 42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    try-catch 语句由一个 try 块其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。try-catch 语句采用下列形式之一: try try-block catch (exception-declaration-1) catch-block-1 catch ...
  • 本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含7类规模为4.4万的知识实体,11类规模约30万实体关系的知识图谱。 本项目将包括以下两部分的内容: 基于垂直网站数据的医药知识图谱...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    32. Java中的异常处理机制的简单原理应用。 12 33. 垃圾回收的优点原理。并考虑2种回收机制。 12 34. 你所知道的集合类都有哪些?主要方法? 13 35. 描述一下JVM加载class文件的原理机制? 13 36. char型变量中能...
  • java基础题 很全面

    2009-05-09 09:24:24
    39. Java中的异常处理机制的简单原理应用。 11 40. 垃圾回收的优点原理。并考虑2种回收机制。 11 41. 你所知道的集合类都有哪些?主要方法? 12 42. 描述一下JVM加载class文件的原理机制? 12 43. char型变量中能不...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    43、Java中的异常处理机制的简单原理应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    43、Java中的异常处理机制的简单原理应用。 44、请写出你最常见到的5个runtime exception。 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?...
  • 43、Java中的异常处理机制的简单原理应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    2)对于独立安装包:打开控制面板,进入添加/删除程序(Win7的为程序和功能)找到Section卸载项目,双击“Section卸载”或者右键菜单中的卸载。 FAQ: 1、 双击section.exe后出现 “无法启动此程序,因计算机丢失...
  • arcgis工具

    2012-10-22 22:37:31
    (对线要素进行标注时,如果标注在线上,标注线会叠加显示,效果不理想,下面叫介绍一种可以在显示标注的地方把线断开的方法,这样效果会美观一些) 操作步骤: 1).把标注转成注记,保存在GDB中 2). 用...
  • c++ 面试题 总结

    2009-09-16 08:44:40
    同一个函数只存在一个实体(inline除外) 子类覆盖它的函数不加virtual ,也能实现多态。 在子类的空间里,有父类的私有变量。私有变量不能直接访问。 ----------------------------------------------------------...
  • fckedit编辑器

    2013-11-10 14:28:32
    但是在控制台显示的中文内容还是乱码,但是没关系,我们没必要去看控制台下的中文 ----------------------------------------------------------------another FCKeditor2.4.2 Java版使用说明 下载地址以及基本...
  • Java 面试宝典

    2013-02-01 10:02:08
    一. Java 基础部分............................................................................................................43、Java 中的异常处理机制的简单原理应用。 .....................................

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

怎么处理程序和实体关系