Spring JSR 250注释
Spring支持JSR 250注释,例如@PostConstruct,@Predestroy和@Resource Annotations.
@resource:
Spring还支持使用JSR-250的注射 @Resource
在字段或者bean属性设置器方法上注释。
这是Java EE 5和Java 6中的常用模式,Spring支持Spring 管理的对象。
@Resource将名称作为属性,默认情况下,Spring 将解释为要注入的bean名称。
换句话说,它遵循的名称语义。
如果我们未指定名称属性,则它将将属性名称解释为要注入的bean名称,然后它将在XML配置文件中搜索。
例子:
1.Country.java:
这是简单的Pojo类,其中有一些属性,所以国家有资本类的名称和对象。
在package org.igi.javapostssforlarearning中创建country.java .Copy内容到Country.java之后。
package org.igi.javapostsforlearning; import org.springframework.beans.factory.annotation.Autowired; public class Country { String countryName; @Resource(name="capitalA") Capital capital; public String getCountryName() { return countryName; } public void setCountryName(String countryName) { this.countryName = countryName; } public Capital getCapital() { return capital; } }
2.Capital.java.
这也是一个名为"bueinkname"的一个属性的简单pojo类。
在package org.igi.javapostsforlearning时创建Capital.java .java.above country类包含此类的对象。
内容进入capical.java之后
package org.igi.javapostsforlearning; public class Capital { String capitalName; public String getCapitalName() { return capitalName; } public void setCapitalName(String capitalName) { this.capitalName = capitalName; } }
3.QualifierAnnotationInspringMain.java.
此类包含main function.CreateQualileAnnotationInsPringMain.java在package org.igi.javapostsfor learearning .copy以下内容到prositileannotationinspringmain.java之后
package org.igi.javapostsforlearning; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class QualifierAnnotationInSpringMain{ public static void main(String[] args) { ApplicationContext appContext = new ClassPathXmlApplicationContext("ApplicationContext.xml"); Country countryObj = (Country) appContext.getBean("CountryBean"); String countryName=countryObj.getCountryName(); Capital capital=countryObj.getCapital(); String capitalName=capital.getCapitalName(); System.out.println(capitalName+" is capital of "+countryName); } }
4.ApplicationContext.xml.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config <bean id="CountryBean" class="org.igi.javapostsforlearning.Country"> <property name="countryName" value="Netherlands" </bean> <bean id="capitalA" class="org.igi.javapostsforlearning.Capital"> <property name="capitalNamehttp://www.blogger.com/blogger.g?blogID=1114068605611316469#editor/target=post;postID=2213204035101507334" value="Amsterdam" </bean> <bean id="capitalB" class="org.igi.javapostsforlearning.Capital"> <property name="capitalName" value="Mumbai" </bean> </beans>
如我们所能注意到,我们有两个相同类型的bean.in country.java我们使用了@resource(name-"capitala")它意味着我们希望在XML配置中使用Bean ID ="小写字母"的国家的AutoWire Capital属性文件。
5.运行:
当我们将运行上面的应用程序时,我们将按照输出作为输出。
Amsterdam is capital of Netherlands
@postContruct和@predestroy:
这些注释是用于定义初始化和破坏回调函数的替代方法。
我们在Spring生命周期回调中使用了所有其他方法。
例子:
在Eclipse IDE中配置Spring,请参阅Hello World示例
1.Country.java:
这是一个简单的pojo类,其中一些属性所以这里的国家有名字。
在package org.igi.javapostssforlarearning中创建country.java .Copy内容到Country.java之后。
package org.igi.javapostsforlearning; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class Country { String countryName ; public String getCountryName() { return countryName; } public void setCountryName(String countryName) { this.countryName = countryName; } @PostConstruct public void init() { System.out.println("In init block of country"); } @PreDestroy public void destroy() { System.out.println("In destroy block of country"); } }
2.lifetimecallbacksmain.java.
此类包含Main Function.Create LifetimeCallBacksmain.java在package org.igi.javapostsforlearning。
内容到LifetimeCallBacksmain.java之后的内容.copy
package org.igi.javapostsforlearning; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class LifetimeCallbacksMain{ public static void main(String[] args) { AbstractApplicationContext appContext = new ClassPathXmlApplicationContext("ApplicationContext.xml"); Country countryObj = (Country) appContext.getBean("country"); System.out.println("Country Name: "+countryObj.getCountryName()); appContext.registerShutdownHook(); } }
其中我们需要注册在抽象应用程序上声明的关机钩注册器HUTDOWNHOOK()方法。
这将确保优雅的关机并调用相关的Destroy方法。
3.ApplicationContext.xml.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="country" class="org.igi.javapostsforlearning.Country" init-method="init" destroy-method="destroy"> <property name="countryName" value="Netherlands" </bean> </beans>
4.运行
当我们将运行上面的应用程序时,我们将按照输出作为输出。
In init block of country Country Name: Netherlands In destroy block of country