- 浏览: 1064352 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
转载自http://blog.csdn.net/WilliamChang/archive/2009/05/22/4205529.aspx
在java代码中可以使用@Autowire或者@Resource注解方式进行装配,这两个注解的区别是:
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.
建议使用@Resource。
spring中autowire的用法
Autowire模式就是在spring的声明文件里用作进行对象间的关联关系自动绑定的,就是在 spring beanfactory内的一个bean对其bean的引用可以自动进行,而不一定用ref=的方式显式声明。在reference的3.3.6节有详细 的介绍,autowire主要有5种模式:
1 no
不使用Autowire,引用关系显示声明,spring的reference也 建议不用autoware,因为这会破坏模块关系的可读性,原文如下:
Note: as has already been mentioned, for larger applications, it is discouraged to use autowiring because it
removes the transparency and the structure from your collaborating classes.
2 byName
用名称关联,如果指定了这种模式,如
<bean id="userManagerTarget" class="com.mdcchina.jianghu.logic.UserManager" autowire="byName">
<property name="baseDAO"/>
</bean>
这样对于bean userManagerTarget的属性baseDAO,spring就会自动去引用同名的bean,也就是上面的声明和下面是等价的:
<bean id="userManagerTarget" class="com.mdcchina.jianghu.logic.UserManager" autowire="no">
<property name="baseDAO">
<ref local="baseDAO"/>
</property>
</bean>
3 byType
和前面的byName类似的,就是这个属性会在整个beanFactory定义里 找和这个属性一样的bean自动关联上,如果有2个或更多这个类型的bean在beanFactory的定义里,就直接抛异常了,如果没有,就什么都不发 生,这个属性就是null,所以这个只适用与这个属性的类型有且只有一个同类的bean在spring里定义
4 constructor
这个的意思我没有确定的把握,不过感觉用途也不会大,好像是用构造函数新建一个属 性类型的bean并关联上,reference原文是:
This is analogous to byType, but applies to constructor arguments. If there isn't exactly one
bean of the constructor argument type in the bean factory, a fatal error is raised.
5 autodetect
这个的意思好像是说自动决定用byType还是constructor方式,原文 如下:
Chooses constructor or byType through introspection of the bean class. If a default
constructor is found, byType gets applied.
综上所述,感觉上只有byName比较实用一些,但是spring的 reference还是不推荐在定义中用这个功能
在java代码中可以使用@Autowire或者@Resource注解方式进行装配,这两个注解的区别是:
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.
建议使用@Resource。
spring中autowire的用法
Autowire模式就是在spring的声明文件里用作进行对象间的关联关系自动绑定的,就是在 spring beanfactory内的一个bean对其bean的引用可以自动进行,而不一定用ref=的方式显式声明。在reference的3.3.6节有详细 的介绍,autowire主要有5种模式:
1 no
不使用Autowire,引用关系显示声明,spring的reference也 建议不用autoware,因为这会破坏模块关系的可读性,原文如下:
Note: as has already been mentioned, for larger applications, it is discouraged to use autowiring because it
removes the transparency and the structure from your collaborating classes.
2 byName
用名称关联,如果指定了这种模式,如
<bean id="userManagerTarget" class="com.mdcchina.jianghu.logic.UserManager" autowire="byName">
<property name="baseDAO"/>
</bean>
这样对于bean userManagerTarget的属性baseDAO,spring就会自动去引用同名的bean,也就是上面的声明和下面是等价的:
<bean id="userManagerTarget" class="com.mdcchina.jianghu.logic.UserManager" autowire="no">
<property name="baseDAO">
<ref local="baseDAO"/>
</property>
</bean>
3 byType
和前面的byName类似的,就是这个属性会在整个beanFactory定义里 找和这个属性一样的bean自动关联上,如果有2个或更多这个类型的bean在beanFactory的定义里,就直接抛异常了,如果没有,就什么都不发 生,这个属性就是null,所以这个只适用与这个属性的类型有且只有一个同类的bean在spring里定义
4 constructor
这个的意思我没有确定的把握,不过感觉用途也不会大,好像是用构造函数新建一个属 性类型的bean并关联上,reference原文是:
This is analogous to byType, but applies to constructor arguments. If there isn't exactly one
bean of the constructor argument type in the bean factory, a fatal error is raised.
5 autodetect
这个的意思好像是说自动决定用byType还是constructor方式,原文 如下:
Chooses constructor or byType through introspection of the bean class. If a default
constructor is found, byType gets applied.
综上所述,感觉上只有byName比较实用一些,但是spring的 reference还是不推荐在定义中用这个功能
发表评论
-
Spring MVC 3.1新特性 生产者、消费者请求限定
2015-06-15 07:42 715参考地址: http://www.iteye.com/to ... -
CSRF TOKEN
2015-02-14 18:02 1146package com.uncle5.pubrub.web.c ... -
Spring MVC Controller单例陷阱
2014-06-27 08:51 682Spring MVC Controller默认是 ... -
[Spring] Hessian权限认证,加密前面
2014-03-06 09:52 1614Hessian的一些基本简介已经在上一节已经全部介绍了,上一节 ... -
FieldRetrievingFactoryBean 和 MethodInvokingFactoryBean
2014-01-09 18:36 1021spring提供了filed的值注入和method的返回值注入 ... -
Spring中ApplicationContext的事件机制(二 内定事件)
2014-01-09 11:08 12342在Spring中已经定义了五个标准事件,分别介绍如下: 1) ... -
当spring 容器初始化完成后执行某个方法 .
2014-01-08 17:40 1444在某些应用中,我们希望,当spring 容器将所有的bea ... -
spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2013-09-12 10:43 1214spring mvc处理方法支持如下的返回方式:ModelA ... -
JSR-303
2013-09-12 00:22 931JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
EHCACHE分布式缓存
2013-09-06 17:26 1314从1.2版本开始,Ehcache可 ... -
springMVC+freemarker整合
2013-09-06 16:39 1435springMVC整合大家都比较熟悉了吧主要有以下几个步骤: ... -
Spring MVC 学习笔记 Viewresol和View
2013-09-06 15:34 931Spring MVC使用ViewResolver来根据cont ... -
Spring的PropertyPlaceholderConfigurer应用
2013-09-06 15:04 3222Spring 利用PropertyPlaceholderCon ... -
SpringSecurity3_Logout
2013-08-22 16:07 2583Logout¶•退出登录的链接 <a href=&quo ... -
spring的default-lazy-init参数 .
2013-04-23 20:08 979spring在启动的时候,会默认加载会默认加载整个对象实例图, ... -
Spring MVC 如何防止XSS、SQL注入攻击
2013-04-16 15:40 1684在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问 ... -
Spring JMS
2013-01-08 10:48 985http://blog.csdn.net/shiqiang12 ... -
给spring jdbctemplate加上一层“绮丽外衣”-动态SQL&&SQL语句以文件存放
2013-01-07 16:00 3307给spring jdbctemplate加上一层“华丽外衣”- ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作 .
2013-01-07 14:54 1186NamedParameterJdbcTemplate内部包含了 ... -
cron表达式(quartz中时间表达式)
2012-12-20 15:54 1003http://sosuny.iteye.com/blog/46 ...
相关推荐
在阅读《Spring中Autowired和Resource的区别.docx》文档时,可以深入探讨这两个注解的内部实现原理,以及在实际项目中的最佳实践。通过源码分析,我们可以了解到Spring如何解析这些注解并执行依赖注入的过程,这有助...
在Java Spring框架中,`@Resource`和`@Autowired`都是用于依赖注入(DI)的注解,但它们有着不同的用途和工作原理。本篇文章主要关注`@Resource`注解,探讨其使用方法和实现机制。 `@Resource`注解通常用于按名称注入...
本篇文章将通过在IDEA 2020环境下构建的Spring 5小实例,深入解析Spring的@Autowired注解,帮助读者理解和掌握这一关键知识点。 首先,我们需要理解什么是依赖注入(Dependency Injection,DI)。在面向对象编程中...
在开发过程中,IDE如IntelliJ IDEA和Eclipse等提供了强大的Spring注解支持。它们可以自动检测并提示注解的使用,同时提供代码补全,帮助开发者快速构建基于注解的Spring应用。 ### 结论 Spring的注解驱动自动装配...
在Spring框架中,`autowire`是一种...合理使用`@Autowired`、`@Qualifier`和`@Resource`注解,可以灵活地控制bean的自动装配。然而,过度依赖自动装配可能带来问题,因此在设计系统时应平衡自动装配和手动配置的使用。
12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.2.1. 创建SqlMap 12.5.2.2. 使用 SqlMapTemplate 和 SqlMapDaoSupport 12.5.3. iBATIS SQL Maps 2.x 12.5.3.1. 创建SqlMapClient 12.5.3.2....
本篇将重点讲解Spring的@Autowired自动装配机制,包括XML配置版和注解版,并深入到源码层面进行解析。 @Autowired是Spring框架中的一个核心注解,用于实现自动装配bean的需求。当我们想要在类中注入某个依赖时,...
虽然@Autowired和@Resource都可以实现依赖注入,但它们有一些区别: - **@Autowired** 默认按类型匹配,可以与JSR-250规范结合使用,支持注解的属性(如required,默认为true)。 - **@Resource** 按名称匹配,它是...
然而,随着框架的发展,为了简化配置,Spring引入了最小化XML配置的概念,以及注解装配的方式,使得配置更加简洁和高效。本文将深入探讨如何实现Spring的最小化XML配置。 一、自动装配 1. 四种类型的自动装配 - ...
12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.3. iBATIS SQL Maps 2.x 12.6. JPA 12.6.1. 在Spring环境中建立JPA 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的JPA实现...
如果希望Spring自动装配Bean,可以使用`autowire`属性,如`byName`、`byType`、`constructor`和`autodetect`,或者结合注解使用`@Autowired`和`@Resource`。`@Autowired`默认按照类型匹配,而`@Resource`则优先按照...
- 虽然这里没有提到,但整合后,Struts2 也可以利用 Spring 的注解(如 `@Autowired`, `@Qualifier`, `@Resource` 等)来进一步简化配置和实现依赖注入。 通过以上步骤,Struts2 框架与 Spring 框架可以无缝集成,...
9. **Spring_demo_09_Resource_Component** - 资源组件(@Resource)注解用于注入资源,它可以自动识别bean的名称,并且支持JSR-250规范。 10. **Spring_demo_06_aop_xml** - 使用XML配置进行AOP,这是在注解方式...
Spring允许通过`autowire`属性实现自动装配,比如`byType`和`byName`,让Spring自动查找并注入匹配类型的Bean。 11. **注解实验**: Spring提供了诸如`@Component`、`@Service`、`@Repository`、`@Controller`等...
- **@Resource注入**:通过`@Resource`注解实现依赖注入。 - **Spring全注解开发**:通过注解完成整个项目的开发工作,避免了大量的XML配置文件编写。 以上就是对“tedu二阶段Spring全教程”的主要内容进行了详细的...
常用的注解包括`@Autowired`、`@Qualifier`、`@Resource`、`@Component`、`@Scope`、`@PostConstruct`和`@PreDestroy`等。 #### AOP(面向切面编程) AOP是Spring的一个重要特性,用于实现横切关注点的模块化。在...
9. **Hibernate集成**:在Spring中使用Hibernate,需要配置SessionFactory并注入DataSource,然后通过`@Entity`、`@Id`等注解定义实体类和主键生成策略。事务管理通常在Service层,通过`@Transactional`注解指定事务...
- **自动装配** (`autowire`): Spring可以根据类型自动匹配并注入Bean,有`byName`、`byType`等方式。 - **byName**: 如果Bean和依赖属性名称相同,则自动装配。 - **byType**: 根据类型匹配依赖。 - **生命周期...