Spring JSR-250 注释

转载自  Spring JSR-250 注释

Spring JSR-250 注释

Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。因为你已经有了其他的选择,尽管这些注释并不是真正所需要的,但是关于它们仍然让我给出一个简短的介绍。

@PostConstruct 和 @PreDestroy 注释:

为了定义一个 bean 的安装和卸载,我们使用 init-method 和/或 destroy-method 参数简单的声明一下 。init-method 属性指定了一个方法,该方法在 bean 的实例化阶段会立即被调用。同样地,destroy-method 指定了一个方法,该方法只在一个 bean 从容器中删除之前被调用。

你可以使用 @PostConstruct 注释作为初始化回调函数的一个替代,@PreDestroy 注释作为销毁回调函数的一个替代,其解释如下示例所示。

示例

让我们使 Eclipse IDE 处于工作状态,请按照下列步骤创建一个 Spring 应用程序:

步骤描述
1创建一个名为 SpringExample 的项目,并且在所创建项目的 src 文件夹下创建一个名为 com.tutorialspoint 的包。
2使用 Add External JARs 选项添加所需的 Spring 库文件,就如在 Spring Hello World Example 章节中解释的那样。
3在 com.tutorialspoint 包下创建 Java 类 HelloWorld 和 MainApp
4在 src 文件夹下创建 Beans 配置文件 Beans.xml
5最后一步是创建所有 Java 文件和 Bean 配置文件的内容,并且按如下解释的那样运行应用程序。

这里是 HelloWorld.java 文件的内容:

package com.tutorialspoint;
import javax.annotation.*;
public class HelloWorld {private String message;public void setMessage(String message){this.message  = message;}public String getMessage(){System.out.println("Your Message : " + message);return message;}@PostConstructpublic void init(){System.out.println("Bean is going through init.");}@PreDestroypublic void destroy(){System.out.println("Bean will destroy now.");}
}

下面是 MainApp.java 文件的内容。这里你需要注册一个关闭钩 registerShutdownHook() 方法,该方法在 AbstractApplicationContext 类中被声明。这将确保一个完美的关闭并调用相关的销毁方法。

package com.tutorialspoint;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {public static void main(String[] args) {AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");HelloWorld obj = (HelloWorld) context.getBean("helloWorld");obj.getMessage();context.registerShutdownHook();}
}

下面是配置文件 Beans.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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config/><bean id="helloWorld" class="com.tutorialspoint.HelloWorld"init-method="init" destroy-method="destroy"><property name="message" value="Hello World!"/></bean></beans>

一旦你在源文件和 bean 配置文件中完成了上面两处改变,让我们运行一下应用程序。如果你的应用程序一切都正常的话,这将会输出以下消息:

Bean is going through init.
Your Message : Hello World!
Bean will destroy now.

@Resource 注释:

你可以在字段中或者 setter 方法中使用 @Resource 注释,它和在 Java EE 5 中的运作是一样的。@Resource 注释使用一个 ‘name’ 属性,该属性以一个 bean 名称的形式被注入。你可以说,它遵循 by-name 自动连接语义,如下面的示例所示:

package com.tutorialspoint;
import javax.annotation.Resource;
public class TextEditor {private SpellChecker spellChecker;@Resource(name= "spellChecker")public void setSpellChecker( SpellChecker spellChecker ){this.spellChecker = spellChecker;}public SpellChecker getSpellChecker(){return spellChecker;}public void spellCheck(){spellChecker.checkSpelling();}
}

如果没有明确地指定一个 ‘name’,默认名称源于字段名或者 setter 方法。在字段的情况下,它使用的是字段名;在一个 setter 方法情况下,它使用的是 bean 属性名称。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core跨平台:使用.NET Core开发一个初心源商城总括

1..NET Core基本介绍 a 作为一个.NET的开发者&#xff0c;在以前的开发中&#xff0c;我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是先出现在linux上&#xff0c;而后才能迁移出现windows上&#xff0c;而且效…

二分查找非递归方式实现

思路分析 代码实现 package com.atguigu.binarysearchnorecursion;/*** 创建人 wdl* 创建时间 2021/4/2* 描述*/ public class BinarySearchNoRecur {public static void main(String[] args) {//测试int[] arr{1,3,8,10,11,67,89};int i binarySearch(arr,67);System.out.pr…

jQuery实现判断li的个数从而实现其他功能

需求&#xff1a;当ul中的li大于6个的时候显示图片&#xff0c;当li小于6个的时候隐藏图片&#xff0c;先来看看效果&#xff1a; 当有7个li的时候&#xff1a; 当有3个li的时候&#xff1a; 现在吧源码放上来&#xff1a; <!DOCTYPE html> <html><head…

windows mysql memcached_Memcached在Windows下的安装

前言 &#xff1a; 简介下 Memcached 和 Memcache 的区别和联系Memcached和Memcache的区别&#xff0c;其实很简单&#xff0c;一个是服务端&#xff0c;一个是客户端&#xff0c;就像mysql一样&#xff0c;我们在命令行里输入各种sql语句就能查询到需要的结果&#xff0c;这就…

baiduTemplate / artTemplate

转载自 baiduTemplate / artTemplate JS引擎模板 一、baiduTeplate 模板语法 提供一套模板语法&#xff0c;用户可以定义一个模板区块&#xff0c;每次根据传入的数据生成对应数据产生的html片段&#xff0c;从而渲染不同的界面效果&#xff1b; 优点&#xff1a; 语法简单…

辅助Visual Studio 2017部署的DevOps新工具

我们能看到Visual Studio 2017中的一个重大改进是对安装程序做了完全重写。前期的Visual Studio构建版本都是大一统的&#xff0c;完成安装需要相当长的时间和大量的磁盘空间。因此有需求要对安装过程做一些改进&#xff0c;这在本质上需要改进Visual Studio及其组件的检测方式…

2016蓝桥杯省赛---java---B---6(方格填数)

题目描述 方格填数 思路分析 全排列检查 代码实现 package com.atguigu.TEST;import static java.lang.Math.abs;class Main{static int a[]{0,1,2,3,4,5,6,7,8,9};static int ans;public static boolean check(){if (abs(a[0] - a[1]) 1 || abs(a[0] - a[3]) 1 || abs…

mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException

报错如下&#xff1a; * org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework…

java中的tostring_java 中重写toString()方法

toString()方法 一般出现在System.out.println(类名.toString());toString()是一种自我描述方法 本身返回的是 getClass().getName() "" Integer.toHexString(hashCode());也就是 类名 hashCode的值重写toString() 只会对类生效&#xff0c;并不能字符串生效; 例如…

art-template入门(一)之介绍

转载自 art-template介绍 介绍 art-template 是一个简约、超快的模板引擎。 它采用作用域预声明的技术来优化模板渲染速度&#xff0c;从而获得接近 JavaScript 极限的运行性能&#xff0c;并且同时支持 NodeJS 和浏览器。在线速度测试。 特性 拥有接近 JavaScript 渲染极…

走过20年……你出现在哪里?

Visual Studio Live 倒计时ing 20岁的 Visual Studio 陪伴了一代代程序猿的成长&#xff0c;从青葱岁月一直走过而立之年&#xff0c;从一个小后生变成了 wuli欧巴……由单身狗也成了孩子他爸…… 如今二十载已过&#xff0c;你还记得当年大明湖畔的 Visual Studio 么&#xff…

2016蓝桥杯省赛---java---B---7(剪邮票)

题目描述 剪邮票 思路分析 全排列深度优先搜索连通检查 代码实现 package com.atguigu.TEST;class Main{static int a[] { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 };static int ans;static boolean vis[]new boolean[12];static void dfs(int g[][], int i, int j) {g[i][…

css解决li边框重合问题

我直接写了个案例&#xff0c;先看下效果图&#xff1a; 下面是html代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>机构动态</title><style type"text/css">*{margin:0px;p…

art-template 入门(二)之安装

转载自 art-template 安装 安装 Npm npm install art-template --save在浏览器中实时编译 下载&#xff1a;lib/template-web.js&#xff08;gzip: 6kb&#xff09; 兼容 IE8&#xff08;IE8 需要补丁才能运行。示例&#xff09; 差异 因为浏览器不支持文件系统&#x…

java文件输入与输出_java文件输入和输出

1.输入读取文件:import java.io.*;import java.math.*;import java.util.*;public class Main{public static void main(String args[]) throws Exception{Scanner cinnew Scanner((new FileInputStream("D:\\in.txt")));int a,b;while(cin.hasNext()){acin.nextInt(…

学习ASP.NET Core,你必须知道“中间件”是什么?中间件如何注册?请求处理管道是如何通过中间件构建的?

ASP.NET Core 的请求处理管道由一个Server和一组有序排列的中间件构成&#xff0c;前者仅仅完成基本的请求监听、接收和响应的工作&#xff0c;请求接收之后和响应之前的所有工作都交给注册的中间件来完成。ASP.NET Core的中间件通过一个类型Func<RequestDelegate, RequestD…

2016蓝桥杯省赛---java---B---8(四平方和)

题目描述 四平方和 代码实现 package com.atguigu.TEST;import java.util.Scanner;class Main{public static void main(String[] args) {Scanner sc new Scanner(System.in);int N0;if (sc.hasNext()){Nsc.nextInt();}for (int a 0; a < 2400; a) {for (int b a; b…

springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:

今天在做ssm整合的时候发现了一个错误&#xff0c;头疼了半天没解决&#xff0c;错误如下&#xff1a; 三月 10, 2018 6:43:37 下午 org.apache.catalina.core.AprLifecycleListener init 警告: The APR based Apache Tomcat Native library failed to load. The error repor…

java 银行帐号_Java程序(银行账户管理)

package 账户管理;import java.text.SimpleDateFormat;import java.util.Date;public class Zhanghu {private String _account;private String _name;private String _ID;private Date _accounTimet ;private double _balance;public Zhanghu(String account , String name , …

art-template入门(三)之语法

转载自 art-template语法 语法 art-template 支持标准语法与原始语法。标准语法可以让模板易读写&#xff0c;而原始语法拥有强大的逻辑表达能力。 标准语法支持基本模板语法以及基本 JavaScript 表达式&#xff1b;原始语法支持任意 JavaScript 语句&#xff0c;这和 EJS …