Spring bean注入方式
来源:互联网 发布:网络培训挂机 编辑:程序博客网 时间:2024/05/02 14:43
Spring bean提供了3中注入方式:属性注入和构造方法注入
1、属性注入:
1 <bean id="dept" class="com.proc.bean.Dept">2 <property name="id" value="2"/>3 <property name="name" value="信息部"></property>4 </bean>
属性注入方式,要求属性提供呢setXxx方法。上面提供的是普通属性注入,如果要注入对象属性,可以这样
1 <bean id="user" class="com.proc.bean.User">2 <property name="id" value="1" />3 <property name="username" value="caoyc"></property>4 <property name="dept" ref="dept"></property>5 </bean>
我们看到第三个属性dept,是一个Dept类型的属性,可以通过ref来引用一个已定义的Dept类型的dept对象。
1 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");2 User user=context.getBean("user", User.class);3 System.out.println(user.getUsername());4 System.out.println(user.getDept().getName());
结果我们可以看到
caoyc信息部
除了可以使用ref来引用外部对象外,我们也可以在user对象内部声明一个Dept对象
1 <bean id="user" class="com.proc.bean.User"> 2 <property name="id" value="1" /> 3 <property name="username" value="caoyc"></property> 4 <property name="dept"> 5 <bean class="com.proc.bean.Dept"> 6 <property name="id" value="2"/> 7 <property name="name" value="信息部"></property> 8 </bean> 9 </property>10 </bean>
2、使用构造器注入
假如,有一个User类
package com.proc.bean;public class User { private int id; private String username; private int age; private double slary; public User() { } public User(int id, String username) { this.id = id; this.username = username; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", age=" + age + ", slary=" + slary + "]"; }}
<bean id="user" class="com.proc.bean.User"> <constructor-arg value="1"/> <constructor-arg value="caoyc"/></bean>
这里使用的是: public User(int id, String username)构造方式
这里使用的是下标方式,这里省略了index属性。index属性从0开始。上面的代码相当于
1 <bean id="user" class="com.proc.bean.User">2 <constructor-arg index="0" value="1"/>3 <constructor-arg index="1" value="caoyc"/>4 </bean>
假设有这样的两个构造方式
1 public User(int id, String username, int age) { 2 this.id = id; 3 this.username = username; 4 this.age = age; 5 } 6 public User(int id, String username, double slary) { 7 this.id = id; 8 this.username = username; 9 this.slary = slary;10 }
配置bean
1 <bean id="user" class="com.proc.bean.User"> 2 <constructor-arg index="0" value="1" /> 3 <constructor-arg index="1" value="caoyc"/> 4 <constructor-arg index="2" value="18"/> 5 </bean> 6 7 <bean id="user2" class="com.proc.bean.User"> 8 <constructor-arg index="0" value="1" /> 9 <constructor-arg index="1" value="caoyc"/>10 <constructor-arg index="2" value="1800"/>11 </bean>
测试代码
1 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");2 User user=context.getBean("user",User.class);3 System.out.println(user);4 5 User user2=context.getBean("user2",User.class);6 System.out.println(user2);
输出结果
1 User [id=1, username=caoyc, age=0, slary=18.0]2 User [id=1, username=caoyc, age=0, slary=1800.0]
这里都是调用的public User(int id, String username, double slary)这个构造函数。那么怎么调用public User(int id, String username, int age)这个构造函数呢?
方法是,在这里我们需要使用到type属性,来指定参数的具体类型
1 <bean id="user" class="com.proc.bean.User">2 <constructor-arg index="0" value="1" />3 <constructor-arg index="1" value="caoyc"/>4 <constructor-arg index="2" value="18" type="int"/>5 </bean>
输出结果
1 User [id=1, username=caoyc, age=18, slary=0.0]2 User [id=1, username=caoyc, age=0, slary=1800.0]
【其它说明】
1、如果value属性是基本属性直接使用
2、如果valeu属性是其它类型,需要使用ref引用外部类型或使用内部定义方式
3、如果value属性中包含了xml特殊字符,需要使用CDATA来。例如:
1 <constructor-arg index="1">2 <value><![CDATA[<caoyc>]]></value>3 </constructor-arg>
阅读全文
0 0
- Spring bean注入方式
- Spring bean 注解方式注入
- spring set方式注入bean
- Spring的bean注入方式
- spring bean注入的方式
- spring注入方式注意:local/bean区别
- Spring注入Bean的几种方式
- Spring bean的三种注入方式
- Spring三种bean注入方式
- Spring中bean的注入方式
- spring的配置文件中bean的注入方式
- spring的配置文件中bean的注入方式
- spring工程中,不通过注入的方式获取bean
- Spring中Bean属性为集合的注入方式
- spring中bean的注入方式的选择?
- spring中bean的注入方式的选择?
- spring 配置bean的方法及依赖注入发方式
- 详细介绍采用Spring管理Bean和依赖注入方式
- POJ2184 奶牛展览
- 计算机图形学-OpenGL-绘制五角星
- Spring入门示例
- 数组补充
- Git
- Spring bean注入方式
- Orcale别名黑洞
- 完成端口iocp和重叠端口
- WebService 异常javax.xml.ws.WebServiceException: class ws.jaxws.GetBasketMapResponse do not have ..
- scrapy抓取豆瓣电影TOP250
- 零基础python入门——学python是为了好玩
- POJ 2785
- 华中农业大学第五届程序设计大赛 GSequence Number [树上二分]【数据结构】
- 数组变换-Java-牛客模拟三