1. 程式人生 > >Spring 進階(8)使用註解配置bean(4)

Spring 進階(8)使用註解配置bean(4)

  1. 新的一天哈,寫了個新的例子。
    package interface_package;
    
    public interface Animal {
        public void Bigger(String  name);
    }
    
    package class_package;
    
    import interface_package.Animal;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component
    public class Dog implements Animal {
        private String name;
        private Mouse Cat;
    
        public Mouse getCat() {
            return Cat;
        }
    
        @Autowired
        public void setCat(Mouse cat) {
            Cat = cat;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void Bigger(String name){
            System.out.println("I am " +   getName() + "  bigger than " + getCat().getName()  +  ", hi~");
        }
    }
    
    package class_package;
    
    import interface_package.Animal;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component
    public class Cat implements Animal {
    
        private String name;
        private Mouse mouse1;
    
    
        public Mouse getMouse1() {
            return mouse1;
        }
        @Autowired
        public void setMouse1(Mouse mouse) {
            this.mouse1 = mouse;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void Bigger(String name){
            System.out.println("I am " +   getName() + "  bigger than " + mouse1.getName()  +  ", hi~");
        }
    }
    
    package class_package;
    
    import interface_package.Animal;
    
    public class Mouse implements Animal {
    
        private String name;
        private Mouse mouse;
    
        public Mouse getMouse() {
            return mouse;
        }
    
        public void setMouse(Mouse mouse) {
            this.mouse = mouse;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void Bigger(String name){
            System.out.println("I am " + getName()  + ", hi~");
        }
    
    }
    

    測試類

    package test_package;
    
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class SpringTest {
        public static void main(String []args){
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        }
    }
    
    <?xml version="1.0" encoding="GBK"?>
    <!--要使用註解的話,就要先引入對應的配置-->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    	http://www.springframework.org/schema/context
    	http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
        <context:component-scan base-package=" class_package"/>
    
    </beans>

     

  2. 這裡寫的是spring5新加入的註解。

    1. 當標註使用自動裝配註解,而容器中沒有符合條件的bean的時候,Autowired的處理方式和aitowire=“ByType”不一樣,AutoWire會直接報錯,為了讓Autowire可以和aitowire=“ByType”一樣只是不執行任何步驟,可以將Autowire的引數required設定為fanse,當然,也可以使用spring5新加入的註解[email protected]

      //    這裡,當將required設定為false的時候,如果spring找不到符合條件的時候,也不會報錯。
          @Autowired(required = false)
          public void setCat(Mouse cat) {
              Cat = cat;
          }
      

      在用IDEA做實驗的時候發現IDEA只有spring4的,所以我找了個5的在這

      package class_package;
      
      import interface_package.Animal;
      
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.beans.factory.annotation.Required;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.lang.Nullable;
      import org.springframework.stereotype.Component;
      
      @Component
      public class Dog implements Animal {
          @Value("dog")
          private String name;
          private Cat Cat;
      
          public Cat getCat() {
              return Cat;
          }
      
      //    這裡,當將required設定為false的時候,如果spring找不到符合條件的時候,也不會報錯。
          @Autowired(required = false)
          public void setCat(Cat cat) {
              Cat = cat;
          }
      
      
      
          @Override
          public void Bigger(String name){
              System.out.println("I am " +   name + "  bigger than " + getCat().getName()  +  ", hi~");
          }
      }