首页 \ 问答 \ java中spring的自动装配和注入的区别

java中spring的自动装配和注入的区别

更新时间:2022-02-24 12:02

最满意答案

JavaBean和class的区别:JavaBean只是比class多一些限制条件,其他无区别。
JavaBean实质也是一个类,这个类遵循:
1. 类必须是具体的和公共的。
2. 具有无参数的构造器。
3. 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性(即getters和setters)。
4. 实现java.io.Serializable接口(这个目前是默认实现的,不需要特殊申明)。
例如以下为一个简单的JavaBean:
package com.test;

import java.lang.*;

public class JavaBean {
    private String attr;

    public JavaBean() {
     // 无参构造函数
    }

    // setter
    public void setAttr(String str){
        attr = str;
    }

    // getter
    public String getAttr(){
        return attr;
    }
}

其他回答

1.Java中的任何东西都是对象,对象是怎么来的,当然是由class创建的,所以Java Bean肯定也是一种class
2.什么样的class才能称为Bean呢?我照搬教科书上的定义:如果一个类中的每个属性都存在它的一对公有的get和set方法,并且这个类存在一个公有的无参构造方法,那么它就是一个Java Bean
给你举个简单的例子:
//例子也是照搬教科书上的,人懒没办法,汗!~~
public class Employee{
private String name;

private String department;
//无参构造方法
public Employee(){
}

public String getName(){
return this.name;
}

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

public String getDepartment(){
return this.department;
}

public void setDepartmet(String department){
this.department=department;
}
}
java bean 是可复用的组件,对java bean并没有严格的规范,理论上讲,任何一个java类都可以是一个bean。但通常情况下,由于java bean是被容器所创建(如tomcat)的,所以java bean应具有一个无参的构造器,另外,通常java bean还要实现serializable接口用于实现bean的持久性。java bean实际上相当于微软com模型中的本地进程内com组件,它是不能被跨进程访问的。enterprise java bean 相当于dcom,即分布式组件。它是基于java的远程方法调用(rmi)技术的,所以ejb可以被远程访问(跨进程、跨计算机)。但ejb必须被布署在诸如webspere、weblogic这样的容器中,ejb客户从不直接访问真正的ejb组件,而是通过其容器访问。ejb容器是ejb组件的代理,ejb组件由容器所创建和管理。客户通过容器来访问真正的ejb组件。
一般的bean里的只有变量和get和set方法
如:
public class BeanTest{
  String str;
  public void setStr(String str){
     this.str=str;
  }
  public String getStr(){
     return str;
  }
}

面class里是一些逻辑方法或者说是一些实现功能的方法。
如:
public class ClassTest(){
  public String systemString(){
     System.out.println("逻辑方法或者功能方法");
  }
}
java bean 是可复用的组件,对java bean并没有严格的规范,理论上讲,任何一个java类都可以是一个bean。但通常情况下,由于java bean是被容器所创建(如tomcat)的,所以java bean应具有一个无参的构造器,另外,通常java bean还要实现serializable接口用于实现bean的持久性。java bean实际上相当于微软com模型中的本地进程内com组件,它是不能被跨进程访问的。enterprise java bean 相当于dcom,即分布式组件。它是基于java的远程方法调用(rmi)技术的,所以ejb可以被远程访问(跨进程、跨计算机)。但ejb必须被布署在诸如webspere、weblogic这样的容器中,ejb客户从不直接访问真正的ejb组件,而是通过其容器访问。ejb容器是ejb组件的代理,ejb组件由容器所创建和管理。客户通过容器来访问真正的ejb组件。
http://www.itisedu.com/phrase/200604251741535.html
这个网页上讲得很仔细,大体来说javabean是一种特殊的class,是一种JAVA语言写成的可重用组件,是按照一定的规范来写的class。

相关问答

更多
  • 1.你把javabean写分家了,不是java bean JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念。 javabean 其实就是一个很普通的 class,无论在语法上或者功能上都没有区别。只不过编写的时候,符合某些约定,以便某些特殊的工具可以抽取里面的信息而已。 我所知的约定就是: 有一个不带参数的 构造方法。当用JSP的usebean标签时,JSP容器就调用该方法“自动”调用该方法来帮你构建一个对象。你也可以自己手动创建的。 方法的名字,有getXXX,setXXX, ...
  • JavaBean和class的区别:JavaBean只是比class多一些限制条件,其他无区别。 JavaBean实质也是一个类,这个类遵循: 1. 类必须是具体的和公共的。 2. 具有无参数的构造器。 3. 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性(即getters和setters)。 4. 实现java.io.Serializable接口(这个目前是默认实现的,不需要特殊申明)。 例如以下为一个简单的JavaBean: package com.test; import java.lang ...
  • java.lang.Class. Class 类的实例表示正在运行的 Java 应用程序中的类和接口 Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。 Class通常用在java的反射机制中.例如通过类名得到对应类的实例. Class.forName()
  • Normal Class :一个Java类 Java Beans : 私有的所有属性(使用getter / setter) 一个public无参数的构造函数 实现可序列化。 Pojo :普通Java对象是不受Java语言规范强制的限制以外的限制的Java对象。 也就是说,POJO不应该 扩展预先指定的类 实现预先指定的界面 包含预先指定的注释 Normal Class: A Java class Java Beans: All properties private (use getters/setters) ...
  • 不同的是,使用@Configuration你可以调用另一个@Bean方法并获得一个完全初始化的实例,如下所示: public class Foo { @Value("Hello, world!") public String value; } @Configuration public class Config { @Bean public Foo createFoo() { Foo foo = new Foo(); System.out.p ...
  • 简单的术语“bean”经常用作JavaBean或Enterprise Java Bean的快捷方式(取决于上下文)。 因此,该术语存在于程序员的通用语言中,它通常指的是Java中的可重用对象/组件。 JavaBean是一个POJO类,它具有getter和setter的特定命名约定,不仅如此:它通常是其他对象(属性)的封装,可序列化并具有零参数构造函数。 Sun(当时)开发了一个关于JavaBean的完整规范。 Sun将其定义为“可以在构建器工具中以可视方式操作的可重用软件组件”。 此外,在JavaBean规 ...
  • 当然可以。 唯一的要求是该类必须是可序列化的。 例: public class A implements Serializable { private int x; public A() {} public A(int x) {this.x = x;} // getters and setters } // later in main class import java.util.Arrays; // later JavaRDD rdd = javaSparkCont ...
  • 必须在JSP中解释和运行自定义JSP标记; Java Bean没有。 自定义JSP标记必须扩展javax.servlet.jsp.tagext.Tag接口; Java Bean没有。 自定义JSP标记可能使用其他Java Bean来完成其工作,但反之则不然。 A custom JSP tag has to be interpreted and run inside a JSP; a Java Bean does not. A custom JSP tag has to extend the javax.se ...
  • 在过去,随着地球的形成,Java EE有两种基本类型的Bean - 会话Bean和实体Bean。 会话Bean是某种内部服务的接口。 大多数每个框架都与会话Bean有一些基本的并行。 实体Bean是由容器管理的持久元素。 当人们谈论Java EE时,特别是当他们抱怨它时,Entity Beans是一个核心问题。 他们根本不是很好。 随着Java持久性架构(JPA)的引入,以及Hibernate和EclipseLink等框架,托管持久性的Java EE视图发生了巨大变化。 我们不再拥有像Entity Bean ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)