邯郸推广网站建设哪个好,支付宝服务商平台,微商代运营公司,聚名网买卖域名合法吗spring aop示例当一个bean依赖于另一个bean时#xff0c;我们使用setter属性或通过构造函数注入bean。 getter方法将向我们返回已设置的引用#xff0c;但是假设您每次调用getter方法时都想要一个依赖bean的新实例#xff0c;那么您可能将不得不采用另一种方法。 在本文中… spring aop示例 当一个bean依赖于另一个bean时我们使用setter属性或通过构造函数注入bean。 getter方法将向我们返回已设置的引用但是假设您每次调用getter方法时都想要一个依赖bean的新实例那么您可能将不得不采用另一种方法。 在本文中我们将看到一个使用lookup-method属性的方法注入的示例。 依存关系 添加以下依赖项 spring-core spring-context spring-beans pom.xml project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.javarticles.spring/groupIdartifactIdspringLookupMethodExample/artifactIdversion0.0.1-SNAPSHOT/versiondependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion${spring.version}/version/dependency/dependenciespropertiesspring.version3.2.3.RELEASE/spring.version/properties/project方法注入方法 每次调用getter方法时如何获取新实例 一种方法是将依赖的bean定义为原型然后实现getter方法以向我们返回一个调用applicationContext.getBean(beanId)的新实例。 这种方法的问题在于现在您依赖applicationContext 。 第二种方法是让容器管理方法注入。 getter方法可以是抽象的让spring动态子类化包含getter方法的类并实现它以返回配置的bean。 这样我们可以使用相同的基类并以不同的方式部署它从而无需更改代码即可返回不同的bean。 使用查找方法的方法注入 所讨论的方法不必是getter方法而应该是返回某些内容的方法。 在我们的示例中 PizzaShop是一个抽象类它具有两个方法makePizza和makeVeggiesPizza() 这makeVeggiesPizza()我们返回素食Pizza 。 披萨店 package com.javarticles.spring;public abstract class PizzaShop {public abstract Pizza makePizza();public abstract Pizza makeVeggiePizza();
} 如您所见我们的示例非常简单。 Pizza有一个静态count变量当我们创建一个新实例时该变量会增加。 它具有一个布尔成员isVeg 如果比萨饼是素食主义者则为true。 比萨 package com.javarticles.spring;import java.util.concurrent.atomic.AtomicLong;public class Pizza {private static AtomicLong count new AtomicLong(0); private boolean isVeg;public Pizza() {count.incrementAndGet();}public String toString() {return A new (isVeg ? veggie : ) Pizza, count( count.get() );}public void setIsVeg(boolean veg) {isVeg veg;}
} 我们将makePizza和makeVeggiePizza配置为lookup-method 。 我们配置了一个普通的比萨饼和一个素食比萨饼豆。 每个抽象方法将具有一个lookup-method元素。 name属性将是方法名称并且bean将指向配置的bean。 在这里我们将pizza和veggiePizza都配置为原型bean。 applicationContext.xml ?xml version1.0 encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean idpizzaShop classcom.javarticles.spring.PizzaShoplookup-method namemakePizza beanpizza/lookup-method namemakeVeggiePizza beanveggiePizza//beanbean idpizza classcom.javarticles.spring.Pizza scopeprototype/bean idveggiePizza classcom.javarticles.spring.Pizza scopeprototypeproperty nameisVeg valuetrue//bean/beans 让我们下雪测试。 我们将首先加载上下文并获取PizzaShop bean。 接下来我们将调用pizzaShop.makePizza()和pizzaShop.makeVeggiePizza() 。 SpringLookupMethodExample package com.javarticles.spring;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringLookupMethodExample {public static void main(String[] args) {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(applicationContext.xml);try {PizzaShop pizzaShop (PizzaShop) context.getBean(pizzaShop);Pizza firstPizza pizzaShop.makePizza();System.out.println(First Pizza: firstPizza);Pizza secondPizza pizzaShop.makePizza();System.out.println(Second Pizza: secondPizza);Pizza veggiePizza pizzaShop.makeVeggiePizza();System.out.println(Veggie Pizza: veggiePizza);} finally {context.close();}}
} 每次调用该方法时它都会创建一个新的Pizza bean我们可以看到计数在增加。 输出 First Pizza: A new Pizza, count(1)
Second Pizza: A new Pizza, count(2)
Veggie Pizza: A new veggiePizza, count(3)下载源代码 这是有关使用lookup-method属性的弹簧方法注入的示例。 您可以在此处下载源代码 springLookupMethodExample.zip 翻译自: https://www.javacodegeeks.com/2015/05/spring-lookup-method-example.htmlspring aop示例