java JSP开发之Spring中Bean的使用

 更新时间:2017年08月06日 11:09:09   投稿:lqh  
这篇文章主要介绍了java JSP开发之Spring中Bean的使用的相关资料,在Spring中,bean的生命周期就比较复杂,这里就详细介绍下,需要的朋友可以参考下

java JSP开发之Spring中Bean的使用

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

  如图所示:在你准备调用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的注解类。

以上就是Spring中Bean的使用方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • java实现合并图片的方法示例

    java实现合并图片的方法示例

    这篇文章主要介绍了java实现合并图片的方法,结合具体实例形式分析了java基于图片的读取、设置、生成等操作实现图片合并功能的相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • 一文带你了解如何正确使用Java中的字符串常量池

    一文带你了解如何正确使用Java中的字符串常量池

    研究表明,Java堆中对象占据最大比重的就是字符串对象,所以弄清楚字符串知识对学习Java很重要。本文主要重点聊聊字符串常量池,希望对大家有所帮助
    2022-12-12
  • string类和LocalDateTime的相互转换方式

    string类和LocalDateTime的相互转换方式

    这篇文章主要介绍了string类和LocalDateTime的相互转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring Boot Actuator 漏洞利用小结

    Spring Boot Actuator 漏洞利用小结

    spring对应两个版本,分别是Spring Boot 2.x和Spring Boot 1.x,因此后面漏洞利用的payload也会有所不同,这篇文章主要介绍了Spring Boot Actuator 漏洞利用小结,需要的朋友可以参考下
    2023-11-11
  • MyBatis-Plus代码生成器的使用详解

    MyBatis-Plus代码生成器的使用详解

    这篇文章主要介绍了MyBatis-Plus代码生成器的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • win10 java(jdk安装)环境变量配置和相关问题

    win10 java(jdk安装)环境变量配置和相关问题

    这篇文章主要介绍了win10java(jdk安装)环境变量配置和相关问题解决,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Java设计模式之代理模式原理及实现代码分享

    Java设计模式之代理模式原理及实现代码分享

    这篇文章主要介绍了Java设计模式之代理模式原理及实现代码分享,设计代理模式的定义,静态代理,动态代理,jdk动态代理实现步骤,原理及源码等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java基础类学习之String详解

    Java基础类学习之String详解

    这篇文章主要为大家详细介绍了Java基础类中String的相关知识,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-12-12
  • Java使用线程池执行定时任务

    Java使用线程池执行定时任务

    本文介绍了Java使用线程池执行定时任务,其中ScheduledThreadPool和SingleThreadScheduledExecutor都是可以执行定时任务的,但是具体怎么执行,下面我们一起进入文章了解具体详情吧
    2022-05-05
  • java swing实现简单的五子棋游戏

    java swing实现简单的五子棋游戏

    这篇文章主要为大家详细介绍了java swing实现简单的五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03

最新评论