博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring学习总结五——SpringIOC容器五
阅读量:4599 次
发布时间:2019-06-09

本文共 2564 字,大约阅读时间需要 8 分钟。

一:spring组件扫描

可以使用注解的方式,代替在xml配置文件配置bean,可以减少配置文件的书写,只需要在spring容器配置

文件中配置<context:component-scan base-package="com.hlcui.*"/>

但是不是只有扫描,所在包以及子包下的类都会被扫描进去,而是只有类上面标记注解的才会被扫描进spring容器

常见注解:

@Component  通用注解,  一般情况下不确定属于那一层时使用,它仅仅是将类对象扫描到spring容器中

@Repository   持久层注解,放在dao那一层

@Service        业务层注解,放在service那一层

@Controller     控制车注解,放在控制层

下面示例演示:

1:新建TestBean类,在类上面添加注解 @Component

1 /** 2  *  3  */ 4 package com.hlcui.dao; 5  6 import org.springframework.stereotype.Component; 7  8 /** 9  * @author Administrator10  * 11  */12 @Component13 public class TestBean {14     public TestBean() {15         System.out.println("实例化bean...");16     }17 18     public void execute() {19         System.out.println("执行bean处理...");20     }21 }

2:在配置文件中添加

1 
2

3:测试方法

1 @Test2     /**测试组件扫描*/3     public void testTestBean(){4         ApplicationContext ac = getApplicationContext();5         TestBean tb = ac.getBean("testBean", TestBean.class);6         tb.execute();7     }

通过结果可以看出bean对象被扫描进了spring容器!

 

二:控制bean的实例化

1:创建ExampleBean1类,并且在类上面添加注解标记@Component

/** *  */package com.hlcui.dao;import org.springframework.stereotype.Component;/** * @author Administrator *  */@Componentpublic class ExampleBean1 {    public ExampleBean1() {        System.out.println("实例化ExampleBean1...");    }}

2:运行测试方法

1 @Test2     /**测试组件扫描模式下控制bean的实例化*/3     public void testExampleBean1(){4         ApplicationContext ac = getApplicationContext();5         ExampleBean1 tb1 = ac.getBean("exampleBean1", ExampleBean1.class);6         ExampleBean1 tb2 = ac.getBean("exampleBean1",ExampleBean1.class);7         System.out.println(tb1 == tb2);8     }

根据结果可以看出默认情况下,是单例模式,虽然调用两次,但是是同一个对象!

3:在类上面添加@Scope("prototype")注解,然后在运行测试方法

可以看出创建了两个对象!

如果在将@Scope修改为singleton时,那么又会是单例模式了。

 

3:初始化和销毁对象

@postConstruct和@preDestroy两个注解,它们的作用就相当于在配置文件的bean元素中

添加init-method方法和destroy-method方法

1 /** 2  *  3  */ 4 package com.hlcui.dao; 5 import javax.annotation.PostConstruct; 6 import javax.annotation.PreDestroy; 7  8 import org.springframework.context.annotation.Scope; 9 import org.springframework.stereotype.Component;10 11 /**12  * @author Administrator13  * 14  */15 @Component16 @Scope("prototype")17 public class ExampleBean1 {18     19     public ExampleBean1() {20         System.out.println("实例化ExampleBean1...");21     }22     23     @PostConstruct24     public void init(){25         System.out.println("初始化ExampleBean1...");26     }27     28     @PreDestroy29     public void destroy(){30         System.out.println("销毁ExampleBean1...");31     }32 }

 

转载于:https://www.cnblogs.com/warrior4236/p/6071875.html

你可能感兴趣的文章
Oracle SQL
查看>>
Webkit内核自定义滚动条样式
查看>>
JSP转发和重定向的区别
查看>>
简单使用JSON,通过JSON 字符串来创建对象(二)
查看>>
Codeforces Round #178 (Div. 2) C. Shaass and Lights
查看>>
windows蓝屏代码
查看>>
Chapter 3 Phenomenon——16
查看>>
15款免费艺术院校学生求职简历word模板,四页求职简历模板,含自荐信
查看>>
Python-S9——Day84-ORM项目实战之权限、form以及modelform
查看>>
BLESS学习笔记
查看>>
java动态代理--一个简单的例子
查看>>
C#结构体
查看>>
在caffe中用训练好的 caffemodel 来分类新的图片所遇到的问题
查看>>
sklearn 随机森林方法
查看>>
HashMap 你真的了解吗?
查看>>
Android透明字体画法
查看>>
(转载)Htmlparser Filter 简要归纳
查看>>
有关SQL查询为null的数据的问题
查看>>
git 恢复误删的分支
查看>>
EXP-00091: Exporting questionable statistics 问题处理方法
查看>>