[email protected]和@PreDestroy注解的使用

1.创建Maven项目,项目名称springdemo41,如图所示

2.配置Maven,修改项目中的pom.xml文件,修改内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>1.0.0</modelVersion>
  <groupId>shequ</groupId>
  <artifactId>springdemo13</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  	<java.version>1.7</java.version>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  
  <repositories>
  	<repository>
  		<id>codelds</id>
  		<url>https://code.lds.org/nexus/content/groups/main-repo</url>
  	</repository>
  </repositories>
  
  <dependencies>
  	<dependency>
  		<groupId>javax.annotation</groupId>
  		<artifactId>jsr250-api</artifactId>
  		<version>1.0</version>
  	</dependency>
  
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-test</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.10</version>
  	</dependency>
  
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  
  	<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>
       
       
  </dependencies>
  <build/>
</project>

3.在src/main/java下创建实体Bean Forum,包名(com.mycompany.shequ.bean)如图所示

4.实体Bean Forum的内容如下

package com.mycompany.shequ.bean;

public class Forum {
	private int fid;
	private String name;
	private int displayOrder;
	public int getDisplayOrder() {
		return displayOrder;
	}
	public void setDisplayOrder(int displayOrder) {
		this.displayOrder = displayOrder;
	}
	public int getFid() {
		return fid;
	}
	public void setFid(int fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "{fid=>"+this.fid+",name=>"+this.name+",displayOrder=>"+this.displayOrder+"}";
	}
}

5.在src/main/java下创建接口IForumService,包名(com.mycompany.shequ.service)如图所示

6.接口IForumService的内容如下

package com.mycompany.shequ.service;

import com.mycompany.shequ.bean.Forum;

public interface IForumService {
	public Forum findForumById(int fid);
}

7.在src/main/java下创建接口IForumService的实现类ForumServiceImpl,包名(com.mycompany.shequ.service.impl)如图所示

8.接口IForumService的实现类ForumServiceImpl的内容如下

package com.mycompany.shequ.service.impl;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import com.mycompany.shequ.bean.Forum;
import com.mycompany.shequ.service.IForumService;

public class ForumServiceImpl implements IForumService {

	@PreDestroy
	public void destroyMethod(){
		System.out.println("destroy-method");
	}

	@PostConstruct
	public void initMethod(){
		System.out.println("init-method");
	}

	public Forum findForumById(int fid) {
		Forum forum = new Forum();
		forum.setName("init-method 与 destroy-method");
		return forum;
	}
}

9.在src/main/resource下创建bean的配置文件spring-bean.xml,如图所示

10.配置文件spring-bean.xml的内容如下

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/util
	http://www.springframework.org/schema/util/spring-util-4.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-4.0.xsd
	">

	<context:annotation-config />

	<bean id="forumservicebean" class="com.mycompany.shequ.service.impl.ForumServiceImpl">
	</bean>
</beans>

11.在src/main/resource下创建核心的配置文件applicationContext.xml,如图所示

12.核心的配置文件applicationContext.xml的内容如下

<beans xmlns="http://www.springframework.org/schema/beans"
	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-4.0.xsd">

	<import resource="bean/spring-bean.xml"/>

</beans>

13.在src/test/java下创建测试文件AppTest,包名(com.mycompany.shequ.test)如图所示

14.测试文件AppTest的内容如下

package com.mycompany.shequ.test;

import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mycompany.shequ.service.IForumService;

public class AppTest {

	@Test
	public void beanTest(){
	    ConfigurableApplicationContext context = new 
	    ClassPathXmlApplicationContext("applicationContext.xml");
		IForumService forumService = (IForumService)context.getBean("forumservicebean");
		System.out.println(forumService.findForumById(1));
		context.close();
	}
}	

15.在测试类AppTest的beanTest方法上右键运行,输出结果如图所示

时间: 2024-10-19 07:41:53

[email protected]和@PreDestroy注解的使用的相关文章

[email&#160;protected]和@PreDestroy注解详解

# @PostConstruct注解使用 ## @PostConstructApi使用说明> PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化.此方法必须在将类放入服务之前调用.支持依赖关系注入的所有类都必须支持此注释.即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用.只有一个方法可以用此注释进行注释.应用 PostConstruct 注释的方法必须遵守以下所有标准:该方法不得有任何参数,除非是在 EJB 拦截器 (i

springboot情操陶冶[email&#160;protected]和@AutoConfigureAfter注解解析

承接前文springboot情操陶冶[email protected]注解解析,本文将在前文的基础上阐述@AutoConfigureAfter和@Conditional注解的作用与解析 [email protected] 根据单词来理解,其就是条件的意思.在分析之前我们可以看下其内部源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @i

Spring高级话题[email&#160;protected]***注解的工作原理

出自:http://blog.csdn.net/qq_26525215 @EnableAspectJAutoProxy @EnableAspectJAutoProxy注解 激活Aspect自动代理 <aop:aspectj-autoproxy/> 开启对AspectJ自动代理的支持. 在用到AOP的自动代理的时候用,如果你理解了Java的动态代理,很容易的就会熟悉AOP的自动代理的. @EnableAsync @EnableAsync注解开启异步方法的支持. 这个相信大家都比较熟悉的.对于异步

[email&#160;protected]注解与自动装配

1   配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss 拥有 Office 和 Car 类型的两个属性:       清单 3. Boss.java [java] view plaincopy package com.baobaotao; public class Boss { private Car car; private Office office

springboot情操陶冶[email&#160;protected]注解解析

承接前文springboot情操陶冶[email protected]注解解析,本文将在前文的基础上对@SpringBootApplication注解作下简单的分析 @SpringBootApplication 该注解是springboot最集中的一个注解,也是应用最广泛的注解.官方也多用此注解以启动spring服务,我们看下其中的源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inher

Java注解用法[email&#160;protected]

Java注解用法[email protected] 参考地址:https://www.cnblogs.com/perfei456/p/8962167.html 1.注解目标 通过 @SuppressWarnings的源码可知,其注解目标为类.字段.函数.函数入参.构造函数和函数的局部变量.建议注解应声明在最接近警告发生的位置 2.抑止警告的关键字 3.代码示例 示例1--抑制单类型的警告: 1 @SuppressWarnings("unchecked") 2 public void a

s[email&#160;protected]注解

自动将数据封装成json格式的数据返回回去 Maven <!-- Json Begin --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackso

[email&#160;protected] 注解原理与使用

Java反射 java反射机制的定义: 在运行转态时(动态的)时. 对于任意一个类,都能够知道这个类的所有属性和方法 对于任意一个对象,都能够知道调用它的任意属性和方法 Class对象 java中用对象来对现实生活中的事物进行抽象,如人(现实生活)抽象到一个person类(java对象).但有没有想过,java中的类(现实生活)其实也是一个Class对象(对象).因此,这个Class类就包含了所有你定义的Class信息,包括所有的方法(私有,公有).构造器.实现了那些方法.哪些注解信息.所有的属

springboot自动装配(1)[email&#160;protected]注解怎么自动装配各种组件

1.对于springboot个人认为它就是整合了各种组件,然后提供对应的自动装配和启动器(starter) [email protected]注解其实就是组合注解,通过它找到自动装配的注解@EnableAutoConfiguration,再由@EnableAutoConfiguration导入自动装配选择类AutoConfigurationImportSelector的selectImports方法去MATA-INF/spring.factories下面找到需要自动装配的组件的对应配置(各种Au