网络编程
位置:首页>> 网络编程>> Jsp编程>> java JSP开发之Spring中Bean的使用

java JSP开发之Spring中Bean的使用

作者:lqh  发布时间:2023-06-16 07:35:08 

标签:Spring,Bean

java JSP开发之Spring中Bean的使用

在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后bean就可以被使用了,一旦该bean不再使用,Java就自动进行垃圾回收。然而,在Spring中,bean的生命周期就比较复杂了。下面是一个bean装载到Spring应用上下文的过程:

java JSP开发之Spring中Bean的使用

如图所示:在你准备调用bean之前,bean工厂执行了若干启动步骤:

1.Spring对bean进行实例化;

2.Spring将值和bean的引用注入到bean对应的属性中;

3.如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBean-Name()方法;

4.如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入;

5.如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将bean所在的应用上下文的引用传入进来;

6.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessBeforeInitialization()方法;

7.如果bean实现了InitializingBean接口,Spring将调用它们的after-PropertiesSet()方法。类似地,如果bean使用initmethod声明了初始化方法,该方法也会被调用;

8.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessAfterInitialization()方法;

9.此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;

10.如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用。

一,创建可以被发现的Bean

在厨师的眼中,一套好的刀是必不可少的,它能够将平淡的食物素材加工成精致的艺术品。


package cooking;

public interface knife{

void cut();
}

现在,我们创建一个名为knife(刀)的接口,它拥有cut(切)的功能。接下来我们实现这个接口


package cooking

@Component
public class beef implements knife{

private int weight = 2;
private double price = 32.1;

public void cut(){
 System.out.println(“This is perfect beef”,+“weight:”+weight
+“kg”+“,”+“It's price is”+price+"$");
}    
}

请注意,我们在beef类上使用了@Component注解。这个简单的注解表明 该类是一个组件类,并告诉Spring要为这个类创建bean。

在默认情况下,组件扫描是不启用的,我们需要显示配置一下Spring,命令Spring去寻找带有@Component注解的类,并为其创建bean


package cooking

@Configuration
@ComponentScan
public class knifeConfig{

}

注意到,在knifeConfig类上加上了@ComponentScan注解,该注解能够在Spring中开启组件扫描,如果没有其他配置的话,@ComponentScan默认会扫描与配置类相同的包,去查找带有@Component的注解类,并在Spring中自动为其创建一个bean。如果你更倾向于使用XML来启用组件扫描的话,那么可以使用Spring context命名空间的<context:component-scan>元素。

<context:component-scan base-package="cooking"/> 该标签会开启组件扫描,去cooking包下寻找带有@Component的注解类。

来源:http://www.cnblogs.com/Dantes-Tang/p/7289362.html

0
投稿

猜你喜欢

  • 偶第一次发主题, 这个是在一个项目中的做...写的一般般, 有什么bug之类的是在所难免, 望见谅功能说明:1. 即时控制用户输入2. 将输
  • 设置Table的细边框通常有这么几种方式:1、设置边框的BORDER=0 、cellspacing=1,设置Table的背景色为所要的边框色
  • 每个写asp程序人必会的知识!在ASP编程中使用数组数组的定义Dim MyArrayMyArray = Array(1,5,123,12,9
  • Instr函数与InstrRev函数大家都应该很熟悉,但是如果你看过《ASP * 站开发实践教程》,你应该注意一下。该书中介绍它们时是很有迷
  • 保护你的ASP页面的两种办法 有时候你只想让人们从你的站点来访问你的某些页面, 而不允许他们从其它站点的非法链接中到达这些页面。在你想保护的
  • 关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习。今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常
  • MySQL插件式存储引擎是MySQL数据库服务器中的组件,负责为数据库执行实际的数据I/O操作,并能允许和强制执行面向特殊应用需求的特定特性
  • 网页制作中是免不了与表格打交道的。表格是网页制作的基础,在网页布局中起着举足轻重的作用,熟练掌握表格的操作,是你制作网页的辅路石,也是你成为
  • 登陆页login.asp:<% if request.Form.count>0 then  ses
  • 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NI
  • 1:除非你现在已经过了不惑之年了,否则你就一定要保持年轻人特有的激情!这里的激情,包含了那种说不明白的近似于冲动的东西,或者idea。也包含
  • 我们在使用很多新闻系统的时候,都会发现一个问题,尤其是使用 HtmlEdit 从WORD文档中直接拷贝文章(尤其里面有复杂表格和文字)的时候
  • 这里说的“相对路径”是相对于“主调文件”所在的文件夹。#include file #include file后面跟的是文件的“相对路径”,不
  • 做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而
  • 在登陆界面中,通常,最重要的部分为登陆的Form表。一个非常棒的提升体验的做法是,在载入页面时自动聚焦到第一个提供用户输入的表单框,让用户不
  • 前一段时间就安装了AspJpeg 2.0,一直没有时间去测试,直到昨天晚上因为服务器无法访问才在本机测试下,特分享下测试结果,只针对GIF图
  • 处理页面中的间歇无缝滚动新闻的时候,最常见的方法就是将滚动区内容复制追加一份,然后通过控制和判断滚动块的scrollTop来实现滚动停止效果
  • 参考: Smashing magzine翻译+整理: Demix当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节。然而代码并不是马
  • 俺觉得自 己试着写写sql,调试调试还是有帮助的,读人家sql例子好像读懂了,自己写就未 必思路正确,调试得通,写得简洁。 这篇文字在网上被
  • 代码如下:'******************************************** '函数名:I
手机版 网络编程 asp之家 www.aspxhome.com