门户网站用什么后台系统好,网页游戏传奇世界网页版,免费微信公众号素材网,外贸流程思维导图1.首先说说 factory-method 是指定创造实例的工厂方法#xff0c;用法#xff1a; factory-method 和 class 配合使用#xff0c;这时 factory-method 必须是class所指定的类中的一个静态方法#xff0c;也就是Spring会直接调用 class 所指定的类的静态工厂方法创建一个实例…1.首先说说 factory-method 是指定创造实例的工厂方法用法 factory-method 和 class 配合使用这时 factory-method 必须是class所指定的类中的一个静态方法也就是Spring会直接调用 class 所指定的类的静态工厂方法创建一个实例然后注册到IOC 容器中 factory-method 和 factory-bean 配合使用factory-bean必须是IOC容器中存在的一个bean实例 beanAfactory-method 配置 factory-bean 所指定的实例 beanA 的一个工厂方法也就是Spring会先创建 factory-bean 所指定的这个实例 beanA然后调用beanA的工厂方法创建一个新的实例 beanB然后注册到IOC 容器中
以上描述可以看出 1.factory-bean 这个属性和 接口 FactoryBean 没有关系 2.factory-method 必须要和 class 或者 factory-bean 中的一个配合使用如果class 和 factory-bean都配置了那么class就不起作用了
factory-bean的官方说明
Alternative to class attribute for factory-method usage.If this is specified, no class attribute should be used.This must be set to the name of a bean in the current or
ancestor factories that contains the relevant factory method.This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.
翻译使用factory-method时class属性的替代方案如果指定了这个(factory-bean)class属性就不用了。factory-bean必须设置一个在当前容器或者父容器中存在的bean并且这个bean必须拥有factory-method所指定的工厂方法。这种配置方式容许这个工厂bean通过依赖注入进行配置factory-method 配置的是一个实例方法不是静态方法bean idexampleFactory classcom.example.ExampleFactory!-- Inject dependencies here --
/beanbean idexampleBean factory-beanexampleFactory factory-methodcreateInstance/
factory-method的官方说明
The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method,if it takes arguments. Autowiring does not apply to factory methods.
创建这个对象的工厂方法的方法名如果工厂方法需要参数就用constructor-arg标签来给工厂方法指定参数。自动注入不会被应用到工厂方法。If the class attribute is present, the factory method will be a static method on the class specified by the class attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the class attribute. This is analogous to FactoryBean behavior.
如果配置了class属性factory-method必须得是这个bean definition的class属性指定的类中的一个静态方法通常这个class属性指定的类和工厂方法创建的对象所属的类是相同的举例当factory method被当作constructor的替代方案来创造对象时这个factory method可能属于一个不同的类。这种情况下factory method创造的对象就不是class属性所指定的类的实例。这有点类似FactoryBean的用法。If the factory-bean attribute is present, the class attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype.
如果指定了factory-bean这个属性class属性就不会启用了factory-method必须是用factory-bean属性作为参数调用getBean返回的实例对象的一个实例方法(必须是 getBean(factory-bean)的一个实例方法 )。factory-bean 可以是单例模式也可以是原型模式The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute.
factory-method 可以有任意个数的参数不支持工厂方法自动注入。把排好顺序的constructor-arg和factory-method结合使用。Setter Injection can be used in conjunction with a factory method.Method Injection cannot, as the factory method returns an instance,which will be used when the container creates the bean.
set方法注入可以和工厂方法联合使用方法注入不可以和工厂方法不可以联合使用因为当容器需要创造bean的时候工厂方法返回一个实例。