IOC和AOP使用拓展

 

多种方式实现依赖注入

构造注入

编写测试类

public class UserServiceImpl implements UserService {      // 声明接口类型的引用,和具体实现类解耦合     private UserDao dao;      // 无参构造     public UserServiceImpl() {     }      // 用于为dao属性赋值的构造方法     public UserServiceImpl(UserDao dao) {         this.dao = dao;     }      public void addNewUser(User user) {         // 调用用户DAO的方法保存用户信息         dao.save(user);     } }

在使用设值注入时,Spring通过JavaBean无参构造方法实例化对象,当我们编写带参构造方法后,java虚拟机不会再提供默认的无参构造方法,为了保证使用的灵活性,建议自行添加一个无参构造方法
配置文件代码如下:

<?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.xsd ">     <!-- 定义UserDaoImpl对象,并指定id为userDao -->     <bean id="userDao" class="dao.impl.UserDaoImpl" />     <!-- 定义UserServiceImpl对象,并指定id为userService -->     <bean id="userService" class="service.impl.UserServiceImpl">         <!-- 通过定义的单参构造为userService的dao属性赋 值 -->         <constructor-arg>             <!-- 引用id为userDao的对象为userService的dao属性赋值 -->             <ref bean="userDao" />         </constructor-arg>     </bean> </beans>

1 一个 constructor-arg元素表示构造方法的一个参数,且使用时不区分顺序。
2 通过constructor-arg元素的index 属性可以指定该参数的位置索引,位置从0 开始。
3 constructor-arg元素还提供了type 属性用来指定参数的类型,避免字符串和基本数据类型的混淆。

constructor-arg节点下的四个属性

  • index是索引,指定注入的属性,从0开始,如:0代表personDao,1代表str属性;
  • type是指该属性所对应的类型,如Persondao对应的是com.aptech.dao.PersonDAO;
  • ref 是指引用的依赖对象;
  • value 当注入的不是依赖对象,而是基本数据类型时,就用value;

比如:

<bean id="Rod" class="cn.springdemo.Greeting">     <constructor-arg index="1">     <value>Rod</value>     </constructor-arg>     <constructor-arg index="0">     <value>世界上有10种人</value>     </constructor-arg> </bean>

使用p命名空间实现属性注入

p命名空间的特点:使用属性而不是子元素的形式配置Bean的属性,从而简化了配置代码

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信