【java 4】---根据名称或类型 完成自动装配
来源:互联网 发布:js怎么给文本框赋值 编辑:程序博客网 时间:2024/06/07 13:52
【java 4】---根据名称或类型完成自动装配
前言:
根据名称或类型配置有什么好处呢?这样可以减少很多的配置量,特别是代码量?
根据名称那到底怎么配置呢?
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
中添加:default-autowire="byName" 根据名字自动匹配:
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byName">
实践完整代码:
Bean2.java:
package com.bjpowernode.spring;public class Bean2 { private Bean3 bean3; private Bean4 bean4; private Bean5 bean5; public Bean3 getBean3() { return bean3; } public void setBean3(Bean3 bean3) { this.bean3 = bean3; } public Bean4 getBean4() { return bean4; } public void setBean4(Bean4 bean4) { this.bean4 = bean4; } public Bean5 getBean5() { return bean5; } public void setBean5(Bean5 bean5) { this.bean5 = bean5; } }
Bean3.java:
package com.bjpowernode.spring;public class Bean3 { private int id; private String name; private String sex; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
Bean4.java:
package com.bjpowernode.spring;public class Bean4 { private int id; private String name; private String sex; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Bean5.java:
package com.bjpowernode.spring;public class Bean5 { private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
AutoWireTest.java:
package test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bjpowernode.spring.Bean2;import junit.framework.TestCase;public class AutoWireTest extends TestCase { private BeanFactory factory; @Override protected void setUp() throws Exception { //读取的方式一: //String[] configLocation=new String[]{ "applicationContext-beans.xml","applicationContext-editor.xml"}; //factory=new ClassPathXmlApplicationContext(configLocation); // factory=new ClassPathXmlApplicationContext("applicationContext.xml"); //读取方式二: factory = new ClassPathXmlApplicationContext("applicationContext-beans.xml"); } /*protected void tearDown() throws Exception { // TODO Auto-generated method stub }*/ /*public void testInjection1() { //简单的new 一下,属性是不会注入的,必须从容器中拿出来 //Bean bean=new Bean();普通的new 不会被注入 Bean1 bean1=(Bean1)factory.getBean("bean1"); System.out.println("bean.strValue= " + bean1.getStrValue()); System.out.println("bean.intValue= " + bean1.getIntValue()); System.out.println("bean.listValue= " + bean1.getListValue()); System.out.println("bean.setValue= " + bean1.getSetValue()); System.out.println("bean.arrayValue= " + bean1.getArrayValue()); System.out.println("bean.mapValue= " + bean1.getMapValue()); System.out.println("bean.dateValue= " + bean1.getDateValue()); } */ public void testInjection1() { //简单的new 一下,属性是不会注入的,必须从容器中拿出来 //Bean bean=new Bean();普通的new 不会被注入 Bean2 bean2=(Bean2)factory.getBean("bean2"); System.out.println("bean2.bean3.id= " + bean2.getBean3().getId()); System.out.println("bean2.bean3.name= " + bean2.getBean3().getName()); System.out.println("bean2.bean3.sex= " + bean2.getBean3().getSex()); System.out.println("bean2.bean4.id= " + bean2.getBean4().getId()); System.out.println("bean2.bean4.name= " + bean2.getBean4().getName()); System.out.println("bean2.bean4.sex= " + bean2.getBean4().getSex()); System.out.println("bean2.bean4.age= " + bean2.getBean4().getAge()); System.out.println("bean2.bean5.password= " + bean2.getBean5().getPassword()); } }
applicationContext.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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byName"><!-- 自动配置,自动找,根据名字相同 default-autowire="byName" --><!-- <bean id="bean2" class="com.bjpowernode.spring.Bean2"> <property name="bean3" ref="bean3"/> <property name="bean4" ref="bean4"/> <property name="bean5" ref="bean5"/> </bean>--><bean id="bean2" class="com.bjpowernode.spring.Bean2"/><bean id="bean3" class="com.bjpowernode.spring.Bean3"> <property name="id" value="100"/> <property name="name" value="Daniel"/> <property name="sex" value="male"/></bean> <bean id="bean4" class="com.bjpowernode.spring.Bean4"> <property name="id" value="100"/> <property name="name" value="Daniel"/> <property name="sex" value="male"/> <property name="age" value="102"/></bean><bean id="bean5" class="com.bjpowernode.spring.Bean5"> <property name="password" value="1"/></bean></beans>
单元测试运行结果:成功如下
根据类型自动匹配:
上面我们介绍了更加名字自动匹配,那么怎么根据类型自动匹配呢?原理是一样,就是添加一句话罢了,详细如下:
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
在这句中添加:
default-autowire="byType"
得到如下:
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byType">
小结:
开发阶段,为了提高速度和效率,在配置文件中是可以更加名字或类型自动匹配。好
处是开发快,但是后面是强烈建议不上具体的注释,为了方便了解,对于的配置和注
释,能更好的调错和维护。
对比: 相对于根据名字自动配置来说,还是相对类型配置是更方便,更安全的。
1 0
- 【java 4】---根据名称或类型 完成自动装配
- 根据名称或类型自动装配(为了减少配置量)
- 根据名字(id)自动装配和根据类型(class)自动装配
- java spring自动装配
- 根据类型名称生成类型实例
- 根据名称或索引删除工作表
- 使用classPath自动扫描装配(修改名称)
- Java乔晓松-spring自动装配Bean的4种方式
- Java根据名称获取值
- java根据名称下载文件
- 根据病毒名称来判断病毒类型
- 1.Spring完成自动装配,两种方式:bean
- 3.Spring完成自动装配,两种方式:测试
- 4、自动装配(autowire)
- Spring(七)用@Resource和@Autowired注解完成属性装配及自动装配
- 找不到类型或命名空间名称MSXML2
- 找不到类型或命名空间名称“SQLDMO”
- 不存在类型或命名空间名称“Office ”
- c++中缀表达式转后缀表达式并计算
- 121. Best Time to Buy and Sell Stock
- 最长递增子序列
- 前端性能优化总结
- 搭建Mac下的OpenGL环境
- 【java 4】---根据名称或类型 完成自动装配
- caffe学习笔记27-ResNet论文笔记
- 算法
- nginx配置-优化静态资源
- Linux 简单的shell实现
- C语言截取字符串
- 贝叶斯法则,先验概率,后验概率,极大后验估计,极大似然估计
- python引入导入自定义模块和外部文件
- 排序算法效率简单测试