Spring框架值注解
注解配置概括
Spring可以按指定的包路径扫描内部的组件,当发现组件类定义前有一下的注解标记,会将该组件纳入Spring容器中。
1)@Component(其他组件)
2)@Controller(Action组件,负责调Service)
3)@Service(Service组件,负责调DAO,处理一些额外逻辑)
4)@Repository(DAO组件,负责访问数据库)
一,引出问题:
当有很多bean需要加入到配置文件时,比如下面:
<bean id="hbCostDAO" scope="singleton" lazy-init="true"
init-method="myinit" destroy-method="mydestroy" class="cn.unis.dao.HbCostDAO"></bean>
<bean id="mybatisCostDAO" scope="singleton" lazy-init="true"
init-method="myinit" destroy-method="mydestroy" class="cn.unis.dao.MyBatisCostDAO"></bean>
<bean id="jdbcCostDAO" scope="singleton" lazy-init="true"
init-method="myinit" destroy-method="mydestroy" class="cn.unis.dao.JdbcCostDAO">
</bean>
随着越来越多的baen需要加入,那么这样会越来月不美观,所以,我们就引入了注解,使用注解只需要一句话
<context:component-scan base-package="cn.unis.dao"></context:component-scan>
这句话表示要注入cn.unis.dao下所有的bean。这就是注解。
虽然在配置文件里简单了,相应的代价就是要在类中来说明哪些是注解。
首先我们来看一些约定:(这里约定大于编码,也就是说都按照框架的约定,我们可以少很多coding)
1,类名和变量名要规范,首字母大写,第二个字母必须小写,否则在使用时会出现冲突或无法识别
2,将bean扫描进spring容器后,默认的bean对应的id就是类名首字母小写,如果需要自定义名字,可以在@注解("自定义名字")
3,默认的scope是singleton,如果需要改变,可以使用@Scope("prototype")定义
如果容器中两个符合要求可被注入同一个组件的Bean对象,可以采用下面注解标记:
1)@Resource,默认按类型匹配注入(JDK自带的)。若有多个符合要求的类型,则报错:匹配不唯一,那么就需要采取按名称注入的方式,它的使用格式为:
@Resource(name="需要注入的Bean对象id值")。
2)@Autowired,默认按类型匹配注入(Spring提供的)。若有多个符合要求的类型,则采取按名称注入的方式,它的使用格式为:
@Autowired
@Qualifier("需要注入的Bean对象id值")
注意事项:注入标记在成员变量定义前,但@Resource也可以在set方法前使用!
案例:id为hibernateCostDao的Bean对象和id为costDao的Bean对象,都符合CostDAO接口,在CostAction组件中注入,那么此时将会报错:匹配不唯一。解决如下:
step1:修改CostActin,添加注入标记
@Controller("costAction")
@Scope("prototype")
public class CostAction {
//@Resource//将costDao注入,按类型匹配注入,JDK自带的
//@Autowired//将costDao注入,按类型匹配注入,Spring提供的
//@Resource(name="hibernateCostDao")//当有多个符合要求的类型,则按名称注入
@Autowired
@Qualifier("hibernateCostDao")//当有多个符合要求的类型,则按名称注入
private CostDAO costDAO;
public void setCostDAO(CostDAO costDAO) { this.costDAO = costDAO; }
Spring框架值注解的更多相关文章
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- 10 Spring框架--基于注解和xml的配置的应用案例
1.项目结构 2.基于xml配置的项目 <1>账户的业务层接口及其实现类 IAccountService.java package lucky.service; import lucky. ...
- 10 Spring框架--基于注解的IOC配置
1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...
- Spring框架 IOC注解
Spring框架的IOC之注解方式的快速入门 1. 步骤一:导入注解开发所有需要的jar包 * 引入IOC容器必须的6个jar包 * 多引入一个:Spring ...
- Spring框架 全注解annotation不使用配置文件(SpringConfiguration.java类代替) 补充 xml配置文件没有提示解决
全注解不使用配置文件 首先还是倒包 在原有的jar包: 需Spring压缩包中的四个核心JAR包 beans .context.core 和expression 下载地址: https://pan.b ...
- spring框架半自动注解
为了简便我们的开发,让我们一起来学习半自动注解吧. 让Spring管理某些类 1.在需要被SpringIOC容器管理的类上打上相应的注解 @Component:任意组件 @Controller:控制层 ...
- 十九、Spring框架(注解方式测试)
一.注解方式测试 1.注解方式测试使用junit.使用junit-4.12.jar和hamcrest-all-1.3.jar(单元测试包) 把这两个jar包,导入到lib文件夹下. 2.TestSpr ...
- Java#Spring框架下注解解析
@Bean 定义Bean @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里.添加的bean的id为方法名 @Configura ...
- spring框架 事务 注解配置方式
user=LF password=LF jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl driverClass=oracle.jdbc.driver.Ora ...
随机推荐
- ASP.NET MVC 5调用其他Action
引用代码: @Html.Action("Index", "BaseData", new { d = "variety" }) 后台获取参数: ...
- Java进击C#——应用开发之Asp.net MVC
本章简言 上一章笔者讲到关于Asp.NET的知识点.了解Asp.NET基本的知识点之后,我们在来学习关于C#的MVC框架就简单多了.显然本章就是来介绍一下关于Asp.NET MVC.对于MVC的思想笔 ...
- PyQt4入门学习笔记(五)
PyQt4里的对话框 对话框是大多数GUI应用中不可分割的一部分.一个对话框是两者或多者的会话.在GUI内,对话框是应用向人说话的方式.一个对话框可以用来输入数据,修改数据,改变应用设置等等. QtG ...
- VS2015突然报错————Encountered an unexpected error when attempting to resolve tag helper directive '@addTagHelper' with value 'Microsoft.AspNet.Mvc.Razor.TagHelpers.UrlResolutionTagHelper
Encountered an unexpected error when attempting to resolve tag helper directive '@addTagHelper' with ...
- MySQL的简单使用和JDBC示例
MySql是关系型数据库管理系统(RDBMS),所谓的"关系型"可以把它当作是"表格"概念,事实上,一个关系型数据库由一个或数个表格组成. MySQL所使用的S ...
- pandas.DataFrame对行和列求和及添加新行和列
导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...
- 来玩Play框架06 用户验证
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 用户验证(User Authentification)复合的使用Play框架的数个 ...
- VMware安装CentOS时,无法以图形界面安装解决办法
有的同学问: 用虚拟机软件(vmware.VirtualBox)安装CentOS系统时, 安装过程中没有中文,也没有出现图形界面,都是以命令行方式去安装, 有时候又会出现图形界面,不知道哪里配置的问题 ...
- Java Business Process Management(业务流程管理) 初识环境搭建
一.简介 (一)什么是jbpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易 ...
- CSS3之3d变换与关键帧
3d变换是在transform基础上实现的 transform-style:preserve-3d; 建立3d空间 perspective:; 景深(设置用户看的距离) perspective-ori ...