- 浏览: 7937102 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
Spring的自动装配(byName;byType) 好处:大幅度减少Spring配置
坏处:依赖不能明确管理,可能会有多个bean同时符合注入规则。没有清晰的依赖关系。
1,byName 根据属性名自动装配。此选项将检查容器并根据名字查找
与属性完全一致的bean,并将其与属性自动装配。
2,byType 如果容器中存在一个与指定属性类型相同的bean,那么将与
该属性自动装配;如果存在多个该类型bean,那么抛出异常,
并指出不能使用byType方式进行自动装配;如果没有找
到相匹配的bean,则什么事都不发生,也可以通过设置
看代码:
UserDAO的实现类 有一个属性daoId
public class UserDAOImpl implements UserDAO {
private int daoId;
public int getDaoId() {
return daoId;
}
public void setDaoId(int daoId) {
this.daoId = daoId;
}
public void save(User user) {
System.out.println("user saved!");
}
@Override
public String toString() {
return "daoId=" + daoId;
}
}
UserService 依赖了UserDAO
public class UserService {
private UserDAO userDAO;
public void add(User user) {
userDAO.save(user);
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
>
<bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl">
<property name="daoId" value="1"></property>
</bean>
<bean name="userDAO2" class="com.bjsxt.dao.impl.UserDAOImpl">
<property name="daoId" value="2"></property>
</bean>
<bean id="userService" class="com.bjsxt.service.UserService" autowire="byName"><!-- 这里的byName是按照属性名进行匹配 这里我们并没有注入UserDAO 但是你的UserService属性名称是UserDAO 所以就相当于 你注入了UserDAO-->
相当于这样 <property name="userDAO" ref="userDAO"/>
</bean>
</beans>
测试:
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
UserService service = (UserService)ctx.getBean("userService");
System.out.println(service.getUserDAO());
打印出来是1 说明默认注入的是UserDAO
----------
改成byType的话 是按照类型自动装配 如果按照上面的写法 就把autowire="byType"> 那么将会报错 因为你的UserDAO 和UserDAO1的类型是一样的 都是class="com.bjsxt.dao.impl.UserDAOImpl" 的
坏处:依赖不能明确管理,可能会有多个bean同时符合注入规则。没有清晰的依赖关系。
1,byName 根据属性名自动装配。此选项将检查容器并根据名字查找
与属性完全一致的bean,并将其与属性自动装配。
2,byType 如果容器中存在一个与指定属性类型相同的bean,那么将与
该属性自动装配;如果存在多个该类型bean,那么抛出异常,
并指出不能使用byType方式进行自动装配;如果没有找
到相匹配的bean,则什么事都不发生,也可以通过设置
看代码:
UserDAO的实现类 有一个属性daoId
public class UserDAOImpl implements UserDAO {
private int daoId;
public int getDaoId() {
return daoId;
}
public void setDaoId(int daoId) {
this.daoId = daoId;
}
public void save(User user) {
System.out.println("user saved!");
}
@Override
public String toString() {
return "daoId=" + daoId;
}
}
UserService 依赖了UserDAO
public class UserService {
private UserDAO userDAO;
public void add(User user) {
userDAO.save(user);
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
>
<bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl">
<property name="daoId" value="1"></property>
</bean>
<bean name="userDAO2" class="com.bjsxt.dao.impl.UserDAOImpl">
<property name="daoId" value="2"></property>
</bean>
<bean id="userService" class="com.bjsxt.service.UserService" autowire="byName"><!-- 这里的byName是按照属性名进行匹配 这里我们并没有注入UserDAO 但是你的UserService属性名称是UserDAO 所以就相当于 你注入了UserDAO-->
相当于这样 <property name="userDAO" ref="userDAO"/>
</bean>
</beans>
测试:
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
UserService service = (UserService)ctx.getBean("userService");
System.out.println(service.getUserDAO());
打印出来是1 说明默认注入的是UserDAO
----------
改成byType的话 是按照类型自动装配 如果按照上面的写法 就把autowire="byType"> 那么将会报错 因为你的UserDAO 和UserDAO1的类型是一样的 都是class="com.bjsxt.dao.impl.UserDAOImpl" 的
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1569方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2018前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3465info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2232import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 490https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 684public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 607https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 669https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 434https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5391 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3097微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 614https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1843什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 963本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1360原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 857public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 670在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 937-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 768一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1904介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
在Spring框架中,自动装配(Auto-Wiring)是一种简化依赖注入的方式,它允许Spring容器自动为bean找到并设置其依赖。本篇文章将深入探讨两种...理解并灵活运用byName和byType,可以帮助开发者更高效地利用Spring框架。
在学习自动装配的过程中,建议先从简单的基于类型的自动装配开始,然后逐步掌握基于注解的自动装配。理解每个bean如何被创建、初始化和装配,以及Spring如何处理这些过程,对于深入理解Spring框架至关重要。 本项目...
(2)byName:根据属性 名 自动装配,设值注入 <bean id="xxx" class="xxx" ></bean> (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 <bean class="xxx" ></bean> (4)constructor:与 ...
Spring自动装配提供了几种模式来处理这些依赖,如`byName`、`byType`、`constructor`、`autodetect`和`default`。这些模式帮助Spring容器识别并注入合适的依赖。 - `byName`模式:根据属性名寻找匹配的Bean名称进行...
- byName:根据bean的属性名自动装配。如果bean的属性名为其他bean的id,那么Spring会尝试将这个bean注入。 - byType:根据属性的类型自动装配。Spring会查找与该属性类型匹配的bean,并将其注入。 - constructor:...
Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,通过配置Spring的bean定义,或者使用@Autowired注解,我们可以让Spring自动为我们的bean注入所需的依赖,简化了代码并增强...
其中,byName是指根据Bean对象的名称来进行自动装配,byType是指根据Bean对象的类型来进行自动装配,constructor是指使用构造方法来进行自动装配,autodetect是指自动选择byType或constructor的自动装配方式,no是指...
在Spring框架中,自动装配...理解并熟练掌握自动装配的原理和注解,能够更好地利用Spring框架的优势,构建更加灵活和可维护的Java应用。在实际使用中,应根据项目需求和bean的关系选择合适的装配策略,以达到最佳效果。
本文将详细介绍Spring框架中的五种自动装配模式:`no`、`byName`、`byType`、`constructor`以及`autodetect`,帮助开发者更好地理解和应用这些模式。 #### 二、自动装配模式概览 自动装配是指Spring容器根据一定的...
本文将深入探讨Spring中的六种自动装配方式:byType、byName、no、constructor、autodetect和default。 1. byType(按类型装配) 当Spring容器在配置文件中找不到明确的通过`ref`属性指定的依赖时,会尝试通过类型...
Spring提供了多种自动装配模式,如byName、byType、constructor、autodetect等。byName是根据属性名匹配bean的id,byType则是根据属性类型匹配bean的类型。constructor和autodetect则分别处理构造函数参数和属性的...
1. **byName**:基于bean的名称进行自动装配。当Spring容器在bean的属性上发现@Autowired注解时,如果没有指定qualifier,那么Spring会尝试找到一个与该属性名称相同的bean来注入。 2. **byType**:基于bean的类型...
byName 自动装配是指通过设置 property 标签的 autowire 属性为 byName,Spring 将自动寻找一个与该属性名称相同或 id 相同的 Bean,注入进来。例如: ```xml <property name="driverClassName" value=...
默认情况下,配置文件中需要通过ref装配Bean,但设置了autowire="byName",Spring会在配置文件中自动寻找与属性名字personDao相同的bean,找到后,通过调用setPersonDao(PersonDao personDao)方法将id为personDao的...
1. **byName**:Spring会查找与bean属性名称相匹配的bean,并将其注入。例如,如果有一个名为`dataSource`的属性,Spring将尝试找到一个名为`dataSource`的bean进行装配。 2. **byType**:Spring会查找与bean属性...
1. **byName**:基于Bean名称的自动装配。Spring会查找与当前Bean属性名相同的其他Bean,并将其注入。例如,如果一个Bean有一个名为`dataSource`的属性,Spring会尝试找到一个名字为`dataSource`的Bean来注入。 2. ...
在 Spring 中,自动装配是通过 AutowireCapableBeanFactory 接口来实现的,该接口定义了四种自动装配策略:byName、byType、constructor 和 AUTOWIRE_AUTODETECT(已被弃用)。 1. byName 自动装配 byName 自动...
- **按名称装配(byName)**:Spring容器查找与依赖对象属性名称相同ID的Bean,并将其注入到该属性中。 - **构造器装配(constructor)**:通过Bean的构造器来实现自动装配,必须保证每个构造参数的类型都有一个唯一...
* byName:使用需要注入的属性对应的set方法名字和Spring容器中的对象的id进行匹配,如果能匹配上,进行自动注入。 * byType:使用需要注入的属性对应的set方法参数类型和Spring容器中的对象的类型进行匹配,如果能...