Spring 基于JSR-250注释包括 @PostConstruct, @PreDestroy 和 @Resource 注释
@PostConstruct 注释替代了初始化回调函数
@PreDestroy 注释替代了销毁回调函数
@Resource 注释使用一个 name 属性,该属性以一个 bean 名称的形式被注入。遵循 by-name 自动连接语义。如果没有明确地指定一个 ‘name’,默认名称源于字段名或者 setter 方法。在字段的情况下,它使用的是字段名;在一个 setter 方法情况下,它使用的是 bean 属性名称。
使用 @PostConstruct 、 @PreDestory 和 @Resource 时,需要在配置文件中添加以下代码
在 beans 中添加 xmlns:context 属性xmlns:context="http://www.springframework.org/schema/context"在 beans 的 xsi:schemaLocation 属性中添加并用空格分隔http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdbeans 内添加<context:annotation-config/>
案例代码:
Person.java
package com.baklib.hello;public class Person {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}
Action.java
package com.baklib.hello;import javax.annotation.Resource;public class Action {@Resource(name="person")private Person person;public void sayHello(){System.out.println("Hello, "+person.getName()+" is "+person.getAge());}}
MainApp.java
package com.baklib.hello;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");Action action = (Action) context.getBean("action");action.sayHello();}}
配置文件 Beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config/><bean id="action" class="com.baklib.hello.Action"></bean><bean id="person" class="com.baklib.hello.Person"><property name="name" value="张三" /><property name="age" value="22" /></bean></beans>
编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息
Hello, 张三 is 22
