Spring框架-3(IOC下)

weixin_33976072發表於2017-09-27

Spring系列文章

Spring框架-1(基礎)
Spring框架-2(IOC上)
Spring框架-3(IOC下)
Spring框架-4(AOP)
Spring框架-5(JDBC模板&Spring事務管理)
Spring框架-6(SpringMvc)
Spring框架-7(搭建SSM)
Spring框架-8(SpringMVC2)

上一篇文章使用的XML配置的方法使用Spring的IOC功能。如果Spring每一個類都需要這麼麻煩的配置,做起專案來那不累死頭牛?所以我們分析一下使用註解的方式來實現。

首先先看下我們需要分析一些什麼東西,如下圖:


6881978-2816c7c7fcf68c35.png
IOC註解.png

註解方式的實現

1.在applicationContext.xml配置檔案中開啟元件掃描

  • Spring的註解開發:元件掃描
<context:component-scan base-package="com.zhong.springdemo"/>
  • 注意:可以採用如下配置,這樣是掃描com.itheima包下所有的內容
<context:component-scan base-package="com.zhong"/>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:contex="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">
    <contex:component-scan base-package="com.zhong.springdemo"/>
  
</beans>

在使用物件中加上註解

@Component(value="userController") -- 相當於在XML的配置方式中 <bean id="userService" class="...">

//將這個類交個spring管理
@Component("userController")
public class MyController {
    //通過spring把myService注入到這個資源內
    @Autowired
    private MyService myService;

    //測試
    public void test() {
        myService.showTest();
    }
}

//將這個類交個spring管理
@Component("userService")
public class MyService {
    //注入一個屬性
    @Value("這是一個測試語句")
    private String textStr;

    //列印注入的屬性值
    public void showTest() {
        System.out.println(textStr);
    }
}

編寫測試程式碼

public static void main(String[] args) {
        // 使用Spring的工廠
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 通過工廠獲得類:
        MyController myController = (MyController) applicationContext.getBean("userController");
        myController.test();
    }
  • 執行結果:

這是一個測試語句

到這就說明我們的註解方式使用成功了。

總結

Bean管理的常用註解

  1. @Component:元件.(作用在類上)

  2. Spring中提供@Component的三個衍生註解:(功能目前來講是一致的)

  • @Controller -- 作用在WEB層

  • @Service -- 作用在業務層

  • @Repository -- 作用在持久層

  • 說明:這三個註解是為了讓標註類本身的用途清晰,Spring在後續版本會對其增強

  1. 屬性注入的註解(說明:使用註解注入的方式,可以不用提供set方法)
  • 如果是注入的普通型別,可以使用value註解

    @Value -- 用於注入普通型別

  • 如果注入的是物件型別,使用如下註解

    @Autowired -- 預設按型別進行自動裝配

  • 如果想按名稱注入

    @Qualifier -- 強制使用名稱注入

    @Resource -- 相當於@Autowired和@Qualifier一起使用
    強調:Java提供的註解 屬性使用name屬性

Bean的作用範圍和生命週期的註解

  1. Bean的作用範圍註解

註解為@Scope(value="prototype"),作用在類上。值如下:

singleton     -- 單例,預設值

prototype     -- 多例
  1. Bean的生命週期的配置(瞭解)

註解如下:

@PostConstruct    -- 相當於init-method
    
@PreDestroy       -- 相當於destroy-method

好了看到這,我們的IOC暫時基礎學完了,下一篇文章我們來分析AOP吧!

相關文章