首页 > 代码库 > IOC和AOP使用扩展 多种方式实现依赖注入
IOC和AOP使用扩展 多种方式实现依赖注入
多种方式实现依赖注入
1.Spring 使用setter访问器实现对属性的赋值,
2.Spring 构造constructor方法赋值,
3.接口注入
4.Spring P命名空间注入直接量
setter访问器实现方式following
实体类中设置属性的set访问器
1 public class Equip {2 private String name; //装备名称3 public String getName() {4 return name;5 }6 public void setName(String name) {7 this.name = name;8 } 9 }
applicationContext.xml中使用
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 8 "> 9 10 <bean id="armet" class="zym.game.entity.Equip">11 <property name="name" value="http://www.mamicode.com/战神头盔"/>12 </bean>13 </beans>
这样就实现了通过setter赋值 前台getBean("armet")的时候 该对象的name属性默认就是:战神头盔。
构造注入
使用设置注入时,Spring通过JavaBean的无参构造方法实例化对象。当我们编写了带参构造方法后,java虚拟机不会再提供默认的无参构造方法,建议自行添加一个无参构造方法。
1 public class User implements Serializable { 2 private String name; 3 private String password;
//car变量称为域属性 4 private Car car; 5 6 @Override 7 public String toString() { 8 return "用户名:"+this.getName()+"\t密码:"+this.getPassword(); 9 };10 11 12 public User() {}13 }
带有域属性的注入方式:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/aop10 http://www.springframework.org/schema/aop/spring-aop.xsd11 ">12 13 <!-- 构造注入 域属性注入 -->14 <bean id="user11" class="entity.User" scope="singleton">15 <constructor-arg index="0" type="java.lang.String" value="http://www.mamicode.com/zs"></constructor-arg>16 <constructor-arg index="1" type="java.lang.String" value="http://www.mamicode.com/pwd@123"></constructor-arg>17 <constructor-arg index="2" type="entity.Car" ref="mycar"></constructor-arg>18 </bean>19 </beans>
P命名空间注入直接量
通过设置p:属性值 给类字段进行赋值
需要添加引用:xmlns:p="http://www.springframework.org/schema/p"
可以在pdf文档里找到
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/aop10 http://www.springframework.org/schema/aop/spring-aop.xsd11 ">12 <!-- 命名空间注入 -->13 <bean id="user2" class="entity.User" p:name="zym" p:password="zym@123"></bean>14 15 </beans>
IOC和AOP使用扩展 多种方式实现依赖注入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。