● 注意:使用注解并不能完全取代xml配置,比如配置连接池DruidDataSource,我们就不能到这个类中去贴注解。
  • 想要实现零配置(完全不使用xml进行配置):javaConfig + 注解

● DI注解:注解配置 <context:congfig-config/>

● IoC注解:组件扫描器 <context:component-scan base-package=""/>

一、通过注解自动装配(比起xml配置的对象类型配置ref,更加推荐使用注解注入

1、 DI 注解:@Autowired、@Resource、@Value

  • value注解的威力: 结合动态properties配置文件引入值变量 @Value("${service.port}")

★ 注入:

  • 常量类型 value Value

  • 对象类型 ref Autowired/Resource

(1)在配置文件中添加注解的解析器的配置:

    <!-- DI注解的解析器 -->
<context:annotation-config/>

(2)使用注解@Autowired

​ □ Autowired 注解寻找 bean 的方式:

​ 1) 首先按照依赖对象的类型找,如果找到,就是用 setter 方法或者字段直接注入;

​ 2)如果在 Spring 上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配报错;

​ 3)可以通过使用 注解@Qualifier("id名字") 来规定依赖对象按照 bean 的 id 和类型的组合方式去找

■ DI注解 Autowired 和 Resource(都需要配置DI注解的解析器):

  • Spring官方是使用:Autowired

  • javaEE规范:Resource 【依赖:javax.annotation-api.jar】

2、IoC 注解:

(1)在配置文件中添加注解的解析器的配置:

   <!-- IoC注解的解析器 -->
<context:component-scan base-package="com.shan.ioc"/>

(2)使用注解@Component 配置Bean

  • @Component 组件若是不写value属性值,此时的bean的id默认是类型首字母小写
// <bean id="dataSource" class="com.shan.ioc.MyDataSource"/>
@Component("dataSource")
public class MyDataSource { }

■ bean 组件版型:四个组件的功能是相同的,只是用于标注不同类型的组件。

@Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Repository (持久层)用于标注数据访问组件,即 DAO 组件。

@Service (业务层)用于标注业务层组件。

@Controller (控制层)用于标注控制层组件(如 struts 中的 Ation,SpringMVC 的 Controller)

3、作用域注解、初始化和销毁注解: @Scope、@PostConstruct、@PreDestroy

  • 其中初始化和销毁注解【依赖:javax.annotation-api.jar】

二、通过java代码装配 java-config

最新文章

  1. 平衡二叉树AVL删除
  2. java 中包的概念,常量,静态与继承
  3. windows IIS6 PHP搭建
  4. java常量池存放在哪里
  5. ZooKeeper典型应用场景一览
  6. python 生成器
  7. 尝试使用word发布博客
  8. cocopods的使用方法
  9. semat内核阿尔法的状态图
  10. js运动 摩擦运动
  11. js点击图片显示在左边大图
  12. 关于 div随网页居中问题
  13. JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
  14. WCF服务自我寄宿
  15. css 椭圆样式
  16. HTML基础-------最初概念以及相关语法
  17. python答题辅助
  18. 竞赛常用STL备忘录
  19. Java多线程:Java内存模型
  20. Windows Server 2008环境下Apache2.4+Tomcat8配置

热门文章

  1. 《剑指offer》面试题38. 字符串的排列
  2. 干货 | Dart 并发机制详解
  3. 【刷题-LeetCode】152 Maximum Product Subarray
  4. 【初体验】macos下android ndk交叉编译hello world,并拷贝到android手机上执行
  5. MySQL基本数据类型之枚举与集合类型
  6. linux中sed命令(全面解析)
  7. Edge 91以上554、10080出现ERR_UNSAFE_PORT解决办法
  8. clickhouse-mysql数据同步
  9. 微服务架构 | 5.1 使用 Netflix Hystrix 断路器
  10. python3调用js的库之execjs