学习Spring5必知必会(4)~使用注解配置、使用java代码配置
2024-09-04 16:25:45
● 注意:使用注解并不能完全取代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
最新文章
- 平衡二叉树AVL删除
- java 中包的概念,常量,静态与继承
- windows IIS6 PHP搭建
- java常量池存放在哪里
- ZooKeeper典型应用场景一览
- python 生成器
- 尝试使用word发布博客
- cocopods的使用方法
- semat内核阿尔法的状态图
- js运动 摩擦运动
- js点击图片显示在左边大图
- 关于 div随网页居中问题
- JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
- WCF服务自我寄宿
- css 椭圆样式
- HTML基础-------最初概念以及相关语法
- python答题辅助
- 竞赛常用STL备忘录
- Java多线程:Java内存模型
- Windows Server 2008环境下Apache2.4+Tomcat8配置
热门文章
- 《剑指offer》面试题38. 字符串的排列
- 干货 | Dart 并发机制详解
- 【刷题-LeetCode】152 Maximum Product Subarray
- 【初体验】macos下android ndk交叉编译hello world,并拷贝到android手机上执行
- MySQL基本数据类型之枚举与集合类型
- linux中sed命令(全面解析)
- Edge 91以上554、10080出现ERR_UNSAFE_PORT解决办法
- clickhouse-mysql数据同步
- 微服务架构 | 5.1 使用 Netflix Hystrix 断路器
- python3调用js的库之execjs