Spring

情到浓时终转凉″ 提交于 2019-12-02 16:15:54

1.School类

package top.wyyblog.DI5;

public class School {

 private String name;  

public void setName(String name) {

  this.name = name; 

}

 @Override 

public String toString() { 

 return "School [name=" + name + "]"; 

}

}

2.Student类

package top.wyyblog.DI5;

public class Student { 

private String name; 

private int age; 

private School school;

 public Student() {

 }

 public void setName(String name) { 

 this.name = name;

 }  

public void setAge(int age) { 

 this.age = age;

 }

 public void setSchool(School school) { 

 this.school = school;

 }  

@Override

 public String toString() { 

 return "Student [name=" + name + ", age=" + age + ", school=" + school + "]"; 

}

}

3.测试类

package top.wyyblog.DI5;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDemo {

 public static void main(String[] args) {  

ApplicationContext context = new ClassPathXmlApplicationContext("top/wyyblog/DI5/applicationContext.xml");  

Student student = (Student) context.getBean("student");  

System.out.println(student); 

}

}

4.自动注入(applicationContext.xml配置文件)

        (a). byName自动注入

<bean id="school" class="top.wyyblog.DI5.School">  

<property name="name" value="极速学院">

</property>

 </bean> 

<!-- autowire="byName"会从容器中查找与实体类的域属性同名的Bean 的id,   并将该Bean对象自动注入给该域属性 -->   

<bean id="student" class="top.wyyblog.DI5.Student" autowire="byName"> 

    <property name="name" value="李四">

</property>     

<property name="age" value="80">

</property>   

</bean>

 (b). byType自动注入

<bean id="school2" class="top.wyyblog.DI6.School"> 

 <property name="name" value="极速学院">

</property>

 </bean>

 <!-- autowire="byType"会从容器中查找与实体类的域属性类型具有 is-a 关系的Bean,   并将该Bean对象自动注入给该域属性 -->   

<bean id="student" class="top.wyyblog.DI6.Student" autowire="byType">   

 <property name="name" value="李四">

</property>   

 <property name="age" value="80"></property>  

  </bean>

 

一)静态代理: 

1.Count.java

[java] view plaincopy
 
 
 
  1. <span style="font-size:16px;">package net.battier.dao;    
  2. /**   
  3.  * 定义一个账户接口   
  4.  *    
  5.  * @author Administrator   
  6.  *    
  7.  */     
  8. public interface Count {     
  9.     // 查看账户方法     
  10.     public void queryCount();     
  11.     // 修改账户方法     
  12.     public void updateCount();      
  13. }   </span>  

2.CountImpl.java

 

 

[java] view plaincopy
 
 
 
    1. package net.battier.dao.impl;     
    2. import net.battier.dao.Count;     
    3. /**   
    4.  * 委托类(包含业务逻辑)   
    5.  *    
    6.  * @author Administrator   
    7.  *    
    8.  */     
    9. public class CountImpl implements Count {  
    10.     @Override     
    11.     public void queryCount() {     
    12.         System.out.println("查看账户方法...");     
    13.     }     
    14.     @Override     
    15.     public void updateCount() {   
    16. System.out.println("修改账户方法...");     
    17.     }     
    18. }     
  
  1. package net.battier.dao.impl;     
  2.      
  3. import net.battier.dao.Count;     
  4.      
  5. /**   
  6.  * 这是一个代理类(增强CountImpl实现类)   
  7.  *    
  8.  * @author Administrator   
  9.  *    
  10.  */     
  11. public class CountProxy implements Count {     
  12.     private CountImpl countImpl;     
  13.      
  14.     /**   
  15.      * 覆盖默认构造器   
  16.      *    
  17.      * @param countImpl   
  18.      */     
  19.     public CountProxy(CountImpl countImpl) {     
  20.         this.countImpl = countImpl;     
  21.     }     
  22.      
  23.     @Override     
  24.     public void queryCount() {     
  25.         System.out.println("事务处理之前");     
  26.         // 调用委托类的方法;     
  27.         countImpl.queryCount();     
  28.         System.out.println("事务处理之后");     
  29.     }     
  30.      
  31.     @Override     
  32.     public void updateCount() {     
  33.         System.out.println("事务处理之前");     
  34.         // 调用委托类的方法;     
  35.         countImpl.updateCount();     
  36.         System.out.println("事务处理之后");     
  37.      
  38.     }     
  39.      
  40. }  
  41.  

     
     
    4.TestCount.java

     

     
    1. Java代码   
    2. package net.battier.test;     
    3. import net.battier.dao.impl.CountImpl;     
    4. import net.battier.dao.impl.CountProxy;     
    5. /**   
    6.  *测试Count类   
    7.  *    
    8.  * @author Administrator   
    9.  *    
    10.  */     
    11. public class TestCount {     
    12.     public static void main(String[] args) {     
    13.         CountImpl countImpl = new CountImpl();     
    14.         CountProxy countProxy = new CountProxy(countImpl);     
    15.         countProxy.updateCount();     
    16.         countProxy.queryCount();     
    17.     }     
    18. }    
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!