使用註解開發

HuDu 發表於 2020-06-29
  • 在Spring4之後,要使用註解開發,必須要保證aop的包匯入了
  • 使用註解需要匯入context約束,增加註解的支援

通過一個小deemo解釋,結構如圖所示
5KoBnDQDAJ.png!large

applicationContext.xml配置資訊為

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!--指定要掃描的包,這個包下的註解就會生效-->
    <context:component-scan base-package="com.hudu"/>
    <context:annotation-config/>

<!--    <bean id="user" class="com.com.hudu.pojo.User">-->
<!--        <property name="name" value="hudu"/>-->
<!--    </bean>-->

</beans>

使用註解開發,實體類配置如下所示

//等價於<bean id="user" class="com.com.hudu.pojo.User"/>
//@Component 元件
@Component
@Scope("singleton")
public class User {
    //相當於<property name="name" value="hudu"/>,或者再set方法上
    @Value("hudu")
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

測試類

public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = context.getBean("user", User.class);
        System.out.println(user.name);
    }
@Autowired:自動裝配型別,名字。如果Autowried不能唯一自動裝配上屬性,則需要通過@Qualifier(value="xxx")
@Nullable:欄位標記了這個註解,說明這個欄位可以為null
@Resource:自動裝配,通過名字,再通過型別
@Component:元件,放在型別,說明這個類被Spring管理了,就是bean。下面是Component的衍生註解,我們再我們在web開發中,會按照mvc三層架構分層!
dao:@Repository
service:@Service
controller:@Controller 這四個註解功能一樣,都是代表將某個類註冊到Spring中,裝配bean

小結

xml與註解:

  • xml更加萬能,適用於任何場合!維護簡單方便
  • 註解:不是自己的類使用不了,維護相對複雜

xml與註解的最佳實踐:

  • xml用來管理bean
  • 註解只負責完成屬性的注入
  • 我們在使用的過程中只需要注意一個問題,必須讓註解生效,就需要開啟註解的支援
<!--指定要掃描的包,這個包下的註解就會生效-->
<context:component-scan base-package="com.hudu"/>
<context:annotation-config/>
本作品採用《CC 協議》,轉載必須註明作者和本文連結