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

