建设网站难吗,世界上最好的地图软件,上海seo优化,适合做网站开发的电脑配置Spring框架被广泛用作依赖项注入容器#xff0c;这是有充分理由的。 首先#xff0c;它促进了集成测试#xff0c;并赋予了我们自定义Bean创建和初始化功能的能力#xff08;例如Autowired用于List类型 #xff09;。 但是还有一个非常有用的功能#xff0c;可能会被忽略… Spring框架被广泛用作依赖项注入容器这是有充分理由的。 首先它促进了集成测试并赋予了我们自定义Bean创建和初始化功能的能力例如Autowired用于List类型 。 但是还有一个非常有用的功能可能会被忽略因此让我们讨论一下bean别名 。 Bean别名使我们可以覆盖已配置的Bean并用不同的对象定义替换它们。 当bean定义是从我们无法控制的外部资源继承时这非常有用。 在下面的示例中我将向您展示bean别名的工作方式。 让我们从src / main / resources / spring / applicationContext-tx.xml配置文件中的以下bean定义开始。 此上下文文件包含许多我们想在集成测试中使用的与事务/ JPA相关的功能。 bean iddataSource classbitronix.tm.resource.jdbc.PoolingDataSource init-methodinit destroy-methodcloseproperty nameclassName value${jdbc.driverClassName}/property nameuniqueName valuedataSource/property nameminPoolSize value0/property namemaxPoolSize value5/property nameallowLocalTransactions valuefalse /property namedriverPropertiespropsprop keyuser${jdbc.username}/propprop keypassword${jdbc.password}/propprop keyurl${jdbc.url}/prop/props/property
/beanbean idjtaTransactionManager factory-methodgetTransactionManagerclassbitronix.tm.TransactionManagerServices depends-onbtmConfig, dataSourcedestroy-methodshutdown/ dataSource bean定义期望使用XA数据源但是由于HSQLDB不提供XA数据源因此我必须依靠LrcXADataSource来克服此限制。 但这意味着将dataSource更改为使用不同的className和driverProperties但我们不能这样做因为上下文定义来自外部工件。 幸运的是这就是抢救bean别名的地方。 这就是我们的集成测试上下文src / test / resources / spring / applicationContext-test.xml如何利用此便捷功能的方式 import resourceclasspath:spring/applicationContext-tx.xml /bean idtestDataSource classbitronix.tm.resource.jdbc.PoolingDataSource init-methodinit destroy-methodcloseproperty nameclassName valuebitronix.tm.resource.jdbc.lrc.LrcXADataSource/property nameuniqueName valuetestDataSource/property nameminPoolSize value0/property namemaxPoolSize value5/property nameallowLocalTransactions valuefalse /property namedriverPropertiespropsprop keyuser${jdbc.username}/propprop keypassword${jdbc.password}/propprop keyurl${jdbc.url}/propprop keydriverClassName${jdbc.driverClassName}/prop/props/property
/beanalias nametestDataSource aliasdataSource/ testDataSource与继承的dataSource具有相同的Class类型但是它带有不同的对象配置。 这是我们每次需要dataSource依赖项时都要使用的数据源而不是原始变体。 这可以通过别名关键字来实现该关键字指示依赖项注入容器将原始数据源定义替换为新版本。 参考 为什么我喜欢 Vlad Mihalcea博客博客中的JCG合作伙伴 Vlad Mihalcea提供的Spring bean别名 。 翻译自: https://www.javacodegeeks.com/2013/12/why-i-like-spring-bean-aliasing.html