spring註解開發

Hanyta發表於2024-05-12
  1. 要想使用註解,必須加入約束和相應配置

    <?xml version="1.0" encoding="UTF-8"?>
    <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.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    
       <context:annotation-config/>
       <!--進行註解驅動註冊,從而使註解生效,用於啟用那些已經在spring容器裡註冊過的bean上面的註解,也就是顯示的向Spring註冊-->
    
    </beans>
    
  2. 之前用xml檔案來配置bean,可以用註解進行代替

    • 配置掃描哪些包下的註解
    <!--指定註解掃描包-->
    <context:component-scan base-package="com.kuang.pojo"/>
    
    • 在指定包下編寫類,增加註解
    @Component("user")
    // 相當於配置檔案中 <bean id="user" class="當前註解的類"/>
    public class User {
        public String name = "zhangsan";
    }
    
    • 使用註解注入屬性
    @Component("user")
    // 相當於配置檔案中 <bean id="user" class="當前註解的類"/>
    public class User {
        @Value("zhangsan")
        // 相當於配置檔案中 <property name="name" value="zhangsan"/>
        public String name;
    }
    
    • @Component三個衍生註解:將類交給Spring管理裝配

      為了更好的進行分層,Spring可以使用其它三個註解,功能一樣,目前使用哪一個功能都一樣。

      • @Controller:web層

      • @Service:service層

      • @Repository:dao層

    • 作用域

    @Controller("user")
    @Scope("prototype")
    public class User {
        @Value("zhangsan")
        public String name;
    }
    
  3. 小結

    • XML可以適用任何場景 ,結構清晰,維護方便

    • 註解不是自己提供的類使用不了,開發簡單方便

    • xml與註解整合開發 :

      • xml管理Bean

      • 註解完成屬性注入

  4. 基於Java類進行配置

    • 實體類
    //這裡這個註解的意思,就是說明這個類被Spring接管了。註解到了容器中
    @Component
    public class User {
    
        @Value("小明")
        public String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name=name;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    
    • 將配置檔案改為java配置類
    //這個也被Spring容器託管,註冊到容器裡,因為他本來就是一個@Component,
    // @Component代表這是一個配置類,就和我們之前看的beans.xml是一樣的
    @Configuration
    @ComponentScan("com.test.pojo")
    @Import(MyConfig2.class)//將另一個配置類匯入
    public class Appconfig_01 {
        //註冊一個bean,就相當於我們之前寫的一個bean標籤,
        //這個方法的名字就相當於bean標籤的id屬性
        //這個方法的返回值,就相當於bean標籤中的class屬性
        @Bean
        public User  getUser(){
            return new User();
        }
    }
    
    • 測試類
    public class Mytest {
        public static void main(String[] args) {
            // 如果完全使用了配置類的方式去做,我們就只能透過AnnotationConfig 上下文來獲取容器,透過配置類的class物件載入!
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Appconfig_01.class);
            User user = (User) context.getBean("getUser");
            System.out.println(user.toString());
        }
    }
    

相關文章