spring中可以只用autowire="byName"或者"byType"来提供自动注入。但是大家有一点还需要注意,那就是它不支持基本数据类型(String,int,long等)的自动注入。例如
JAVA类:   1. public class TestBean {
   2.     private String name;
   3.     private Long age;
   4.     private String fullName;
   5.     private TestBean2 testBean2;
   6.     
   7.     public void setTestBean2(TestBean2 testBean2) {
   8.         this.testBean2 = testBean2;
   9.     }
  10.     public TestBean2 getTestBean2() {
  11.         return testBean2;
  12.     }
  13.     public void setFullName(String fullName) {
  14.         this.fullName = fullName;
  15.     }
  16.     public String getFullName() {
  17.         return fullName;
  18.     }
  19.     
  20.     public void setAge(Long age) {
  21.         this.age = age;
  22.     }
  23.     
  24.     public Long getAge() {
  25.         return age;
  26.     }
  27.
  28.     public void setName(String name) {
  29.         this.name = name;
  30.     }
  31.
  32.     public String getName() {
  33.         return name;
  34.     }
  35. }
36.JAVA类2:   1. public class TestBean2 {
   2.   public String getString(){
   3.       return "testB";
   4.   }
   5. }配置文件:   1. <beans default-autowire="byName">
   2.     <!--  login -->
   3.     <bean id="testBean" class="TestBean">
   4.         <property name="fullName">
   5.             <value>fullName</value>
   6.         </property>
   7.     </bean> 
   8.     <bean id="name" class="java.lang.String">
   9.         <constructor-arg>
  10.             <value>hell</value>
  11.         </constructor-arg>
  12.     </bean>
  13.     <bean id="age" class="java.lang.Long">
  14.         <constructor-arg>
  15.             <value>20</value>
  16.         </constructor-arg>
  17.     </bean>
  18.     <bean id="testBean2" class="TestBean2"/>
  19. </beans>测试类:   1. import org.springframework.context.support.ClassPathXmlApplicationContext;
   2.
   3. public class Test {
   4.     public static void main(String[] args) {
   5.         ClassPathXmlApplicationContext t = new ClassPathXmlApplicationContext(
   6.                 "test.xml");
   7.         TestBean bean = (TestBean) t.getBean("testBean");
   8.         System.out.println("name:" + bean.getName() + "  age:" + bean.getAge()
   9.                 + " fullName :" + bean.getFullName() + "  testBean2"
  10.                 + bean.getTestBean2().getString());
  11.     }
  12.
  13. }输出的结果是:
name:null age:null fullName :fullName  testBean2:testB
spring源码中排除基本类型的代码(源码来自:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory类)在:   1.  protected String[] unsatisfiedNonSimpleProperties(AbstractBeanDefinition mbd, BeanWrapper bw) {
   2.   Set result = new TreeSet();
   3.   PropertyValues pvs = mbd.getPropertyValues();
   4.   PropertyDescriptor[] pds = bw.getPropertyDescriptors();
   5.   for (int i = 0; i < pds.length; i++) {
   6.    if (pds[i].getWriteMethod() != null && !isExcludedFromDependencyCheck(pds[i]) &&
   7.      !pvs.contains(pds[i].getName()) && !BeanUtils.isSimpleProperty(pds[i].getPropertyType())) {
   8.     result.add(pds[i].getName());
   9.    }
  10.   }
  11.   return StringUtils.toStringArray(result);
  12.  }
  13.   
请注意以上紫色部分。而这个unsatisfiedNonSimpleProperties方法都是在自动注入时调用。所以基本类型不会被注入。
 要看更好格式的朋友直接到偶博客去看吧,这里有点乱感觉 http://blog.csdn.net/lovingprince/archive/2009/01/07/3728345.aspx