1.组件扫描

  Spring3.0后为我们引入了组件自动扫描机制,它可以在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。

A.开启注解扫描:base-package为需要扫描的包(含子包)

<context:component-scan base-package="com.web"></context:component-scan>

B.在组件bean上定义类注解,在组件bean的依赖属性上,定义依赖注解 

  1. /**
  2. * spring 注解扫描演示 bean
  3. * @Component:通用组件
  4. * @Scope : 设置组件的作用域
  5. * prototype:该模式下会每次getBean都创建一个对象,并且都是延迟加载的
  6. * @Lazy:设置组件是否延迟加载
  7. * true为延迟加载 false为容器创建则立即加载bean
  8. * @PostConstruct: 初始化方法注解
  9. * @PreDestroy: 销毁方法注解
  10. * @author Administrator
  11. */
  1. @Component
  2. //@Scope("prototype")
  3. @Lazy(true)
  4. public class ExampleBean {
  5.  
  6. public ExampleBean(){
  7. System.out.println("ExampleBean 无参构造被调用。。。。。。");
  8. }
  9.  
  10. @PostConstruct
  11. public void init(){
  12. System.out.println("ExampleBean 初始化方法调用.....");
  13. }
  14.  
  15. @PreDestroy
  16. public void destroy(){
  17. System.out.println("ExampleBean 销毁方法调用......");
  18. }
  19.  
  20. }

注解下的类扫描和依赖注入

依赖关系的注解:

注意:

a.此类注解可以在属性上面设置,也可以在set方法上面设置

b.一般用于属性上,因为注解实现下set方法是可以省略不写的

c.下面的多个依赖注解,只需要使用一个Resource即可

  1. /**
  2. * Dao访问数据库
  3. * @Repository:设置数据访问层的类级别注解
  4. * @Resource: 用于引用类型属性的值注入 spring会先按属性名字从容器中查找是否有适合的bean
  5. * 如果找不到,再按照类型查找是否有适合的bean,如果找到bean则注入进去,
  6. * 如果找不到合适的bean,就会报bean不存在的异常 建议还是遵从默认规则
  7. * name属性可以用于指定查找的bean的名字
  8. *
  9. * @author Administrator
  10. *
  11. */
  12. @Repository
  13. public class EmpDaoImpl implements EmpDao{
  14.  
  15. @Resource/*(name="DbUtil")*/
  16. private DbUtil dbUtil;//通过dbUtil 获取数据库连接
  1. /**
  2. * @Service :服务层的类级别注解
  3. * @Autowired: 按照类型先查找,再按照名字找(避免两个同类型的bean的问题)
  4. * @Qualifier("empDaoImpl") :指定容器查找的bean的名字
  5. * @author Administrator
  6. *
  7. */
  8. @Service
  9. public class EmpServiceImpl implements EmpService{
  10.  
  11. @Autowired
  12. @Qualifier("empDaoImpl")
  13. EmpDao empDao;//spring 容器中有EmpDaoImpl的对象存在,父类引用指向子类对象
  1. /*
  2. *
  3. *
  4. * @Value: 用于注解注入值,可以给基本类型和字符串类型直接赋值 可以写在属性上,也可以写在setter上
  5. * 依赖注入注解下,省略setter方法,直接将注解写在属性上即可
  6. */
  7. @Component("DbUtil")
  8. public class DbUtil {
  9. //从配置文件中找到driver对应的值
  10. @Value("#{props.driver}")
  11. private String driver;
  12. private String username;
  13. @Value("#{props.password}")
  14. private String password;
  15. @Value("#{props.url}")
  16. private String url;
  17. public void setDriver(String driver) {
  18. try {
  19. Class.forName(driver);//加载驱动
  20. } catch (ClassNotFoundException e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
  24. this.driver = driver;
  25. }
  26.  
  27. @Value("#{props.username}")
  28. public void setUsername(String username) {
  29. this.username = username;
  30. }
  31.  
  32. }

<util:properties id="props" location="classpath:db.properties"></util:properties>

  1. /**
  2. * @Controller: 设置控制层的类级别注解
  3. * @Inject:标准注解,属于通用注解,该注解功能不属于spring的
  4. * 用于设置属性注入,并且可以通过@Named指定从spring容器中查找的bean的名字
  5. * @author Administrator
  6. *
  7. */
  8. @Controller
  9. public class EmpController {
  10. @Inject
  11. EmpService empServiceImpl;

注解实现IOC和DI的更多相关文章

  1. Spring详解(四)------注解配置IOC、DI

    Annotation(注解)是JDK1.5及以后版本引入的.它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查.注解是以‘@注解名’在代码中存在的. 前面讲解 IOC 和 DI 都是通过 ...

  2. spring的IOC,DI及案例详解

    一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...

  3. Spring MVC -- Spring框架入门(IoC和DI)

    Spring MVC是Spring框架中用于Web应用开发的一个模块.Spring MVC的MVC是Model-View-Controller的缩写.它是一个广泛应用于图像化用户交互开发中的设计模式, ...

  4. sping IOC和DI 初始化和关系

    springIOC和spring DI作为spring core的核心思想,有必要学习下才能更好的使用spring ========================================== ...

  5. Spring IOC(DI)

    软件152 余建强 1 什么是IOC IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不 ...

  6. spring常用注解以IOC理解

    使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...

  7. IOC和DI,AOP的本质理解

    IOC: Inversion of Control,控制反转, 控制权从应用程序转移到框架(如IOC容器),是框架共有的特性. 对于IOC的理解,可以把IOC看作是一个生产和管理bean对象的容器.原 ...

  8. 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

    用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是 ...

  9. 理解Spring中的IoC和DI

    什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方" ...

随机推荐

  1. Ubuntu18.04 设置wifi热点

    (1)在终端输入 命令:nm-connection-editor (2)然后点击wifi网络进行配置即可:

  2. python教程(七)·字典

    本文介绍本系列教程最后一个数据结构--字典 在现实生活中,查英语字典的时候,我们通常根据单词来查找意思.而python中的字典也是类似的,根据特定的 "键"(单词)来查找 &quo ...

  3. 八球胜负 HDU-2537

    #include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int a,b,n,i; c ...

  4. LintCode 896. Prime Product 简明题解

    Given a non-repeating prime array arr, and each prime number is used at most once, find all the prod ...

  5. [Err] ERROR: wrong record type supplied in RETURN NEXT

    在写GP 输出不定长列数据表 函数时,报了一个错,百思不得其解.在公司大佬帮助下,知道是什么鬼了.. 先看看例子吧: ---- 函数定义 CREATE OR REPLACE FUNCTION &quo ...

  6. PhpStorm2016.2版本 安装与破解

    1.PhpStorm2016简介以及下载地址 1.1.PhpStorm介绍    PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全 快速导 ...

  7. # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod

    20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...

  8. [arc062E]Building Cubes with AtCoDeer

    Description 传送门 Solution 这道题直接暴力就好..毕竟只要枚举了前后两个瓷砖的方向和编号,其他瓷砖的颜色就是确定的了. 然而场上我的去重除了问题qaq. 我们钦定在立方体最前面的 ...

  9. 【LG4091】[HEOI2016/TJOI2016]求和

    [LG4091][HEOI2016/TJOI2016]求和 题面 要你求: \[ \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! \] 其中\(S\)表示第二类斯特林数,\ ...

  10. SOAPUI参数中xml中CDATA包含问题

    <![CDATA[ <Request> <CardNo>000002629518</CardNo> <SecrityNo/> <BankTr ...