AnnotationConfigApplictionContext源码分析
来源:互联网 发布:自动麻将机作弊软件 编辑:程序博客网 时间:2024/06/05 12:45
创建接口:
MessageService.java
package com.my.web.service;/** * Created by yexianxun on 2017/2/20. */public interface MessageService { String getMessage();}
UserService.java
package com.my.web.service;/** * Created by yexianxun on 2017/2/21. */public interface UserService { void addUser();}
MessagePrinter.java
package com.my.web;import com.my.web.service.MessageService;import com.my.web.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;/** * Created by yexianxun on 2017/2/20. */@Componentpublic class MessagePrinter { final MessageService messageService; @Autowired public MessagePrinter(MessageService messageService) { this.messageService = messageService; } @Autowired private UserService userService; public void printMessage() { System.out.println(messageService.getMessage()); userService.addUser(); }}
UserServiceImpl.java
package com.my.web.service.impl;import com.my.web.service.UserService;import org.springframework.stereotype.Component;/** * Created by yexianxun on 2017/2/21. */@Componentpublic class UserServiceImpl implements UserService { @Override public void addUser() { System.out.println("add a user"); }}
Application.java
package com.my.web;import com.my.web.service.MessageService;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.*;/** * Created by yexianxun on 2017/2/20. */@Configuration@ComponentScanpublic class Application { @Bean MessageService mockMessageService() { return new MessageService() { @Override public String getMessage() { return "hello world"; } }; } public static void main(String[] args) { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Application.class); MessagePrinter printer = applicationContext.getBean(MessagePrinter.class); printer.printMessage(); }}
@Controller、@Service、@Component、@Repository主要替换bean在xml中定义,而是通过以上注解定义。这四个主要区别:
@Controller 主要标识控制层类
@Service 主要标识业务层类
@Repository 主要标识数据访问层类
@Component 主要标识组件类
四个注解对应的BeanDefinition会有差异,但是功能是一样的。
@ComponentScan 注解与配置文件中 <context:component-scan base-package="com.adtime.bullbat.client"/>
相似。
0 0
- AnnotationConfigApplictionContext源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析:SparseArray分析
- 源码- Spark Broadcast源码分析
- Android源码/框架源码分析
- 【Android应用源码分析】HandlerThread 源码分析
- 【Android应用源码分析】IntentService 源码分析
- java源码分析01-Object源码分析
- VC++源码分析 - 中国象棋源码分析
- [Java源码分析]ArrayList源码分析
- [java源码分析]LinkedList源码分析
- Android缓存
- GL_NEAREST和GL_LINEAR的选择
- 再议深拷贝与浅拷贝
- 理解@Autowired,@Service,@Resource注解
- Java 之泛型通配符
- AnnotationConfigApplictionContext源码分析
- 小菜鸟学习三层
- 2.初始化工作
- 化暴力为标算——莫队
- js获取网页的鼠标坐标
- JS:复习一些常用的Array方法
- hibernate框架检索策略之get与load
- 插入排序
- [编程学习]-----有用的link汇总