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;     }
时间: 2024-10-07 03:22:09

Spring框架值注解的相关文章

跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Respository:标识持久层组件 3.@Service:标识业务层组件 4.@Controller:标识表现层组件 Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称 当在组件类上使用了特定的注解之后, 还需要在 Spring 的配置文件

Spring框架 IOC注解

Spring框架的IOC之注解方式的快速入门        1. 步骤一:导入注解开发所有需要的jar包        * 引入IOC容器必须的6个jar包        * 多引入一个:Spring框架的AOP的jar包,spring-aop的jar包        2. 步骤二:创建对应的包结构,编写Java的类        * UserService            -- 接口        * UserServiceImpl        -- 具体的实现类        3.

Spring框架常用注解

一.解析测试Application全局配置文件 三个注解都是注解在类上 //兼容junt测试包 @RunWith(SpringJUnit4ClassRunner.class) //模拟浏览器发送请求注解 @WebAppConfiguration //解析配置文件    @ContextConfiguration(locations = "classpath:applicationContext.xml") 二.持久层.业务层.显示层.架构分层注解 @Service服务层组件,用于标注业

Spring框架-使用注解实现IOC的配置

注解:注解方式将Bean的定义信息和Bean的实现类结合在一起. @Component:实现Bean组件的定义 @Repository:标注DAO类 @Service:标注业务类 @Controller:标注控制器类 使用@Autowired注解实现 Bean的自动装配,默认是按照类型匹配的.可以使用@Qualifier指定Bean的名称,一半情况下,这两个注解是配合使用的 最后使用注解信息启动spring容器: 原文地址:https://www.cnblogs.com/dongyaotou/p

spring框架 事务 注解配置方式

user=LF password=LF jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl driverClass=oracle.jdbc.driver.OracleDriver initialPoolSize=15 maxPoolSize=30 minPoolSize=5 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www

Spring框架-使用注解实现异常抛出增强,最终增强 ,环绕增强 @AfterThrowing @After @Around

其实和前面的也差不多,大同小异 //统一定义切入点 @Pointcut("execution(* service.UserService.*(..))") public void pointcut(){ } 模拟程序运行的时候发生异常 运行测试方法: 最终增强: 其他的都不变,最终的运行结果: 环绕增强: 运行测试类: 01-01 14:30:38[INFO]aop.UserServiceLogger -调用[email protected]b78d的void service.User

跟着刚哥学习Spring框架--AOP(五)

AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入封装.继承.多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合.不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性.异常处理和透明的持续性也都是如此,这种散布在各

跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参的构造器 2.依赖注入的方式 1)属性注入:通过setter方法注入Bean的属性值或依赖的对象 属性注入使用<Property>元素,使用name指定Bean的属性名称,使用value指定Bean的属

跟着刚哥学习Spring框架--Spring容器(二)

Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用.  Bean是Spring管理的基本单位,任何的Java对象和组件都被当成Bean处理,容器还负责管理Bean与Bean之间的依赖关系.  两种类型的启动实现   1.BeanFactory:IOC容器的基本实现,是Spring框架的基础设施,面向Spring本身: -- Spring容器最基本的接口就是BeanF