Spring新註解

海浪星空發表於2020-11-12

Spring新註解

@Configuration

表明當前類是一個配置類。他的作用和bean,xml一樣

@ComponentScan/ComponentScans

-------- 作用:用於Spring 在建立容器時要掃描的包
--------屬性value/basePackages:兩者的功能都是一樣的 <context:component-scan base-package=“com.itheima”></context:component-scan>

@Bean

*Bean

  • 作用:用於把當前方法的返回值作為bean物件存入Spring的IOC容器中(Map結構:<key ,value> key => id ,value=>要建立的物件)
  • 屬性:
  •       name:用於指定bean的id 預設值:不寫時預設值當前方法的名稱
    
  •       細節:當我們使用註解配置方法時。如果方法有引數,spring框架會去容器查詢
    
  •       有沒有可以使用的bean物件,查詢的方式和Autowired的方法是一樣的
    

在進行註解開發的時候,還是有bean,xml檔案的 存在,為了讓Spring IOC純註解開發,所有Spring還有其他的註解。
如下面的context:component-scan標籤,配置QueryRunner的bean標籤,配置資料來源的標籤.
如何用註解達到去除bean…xml。

在這裡插入圖片描述

建立配置類:
SpringConfiguration.java

package com.itheima.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

/*
* 該類是一個配置類,他的 作用是和bean.xml一樣的
* Spring中的新註解
* Configuration
*           作用:當前類是一個配置類
*ComponentScan
*           作用:用於Spring 在建立容器時要掃描的包
*           屬性value/basePackages:兩者的功能都是一樣的 <context:component-scan base-package="com.itheima"></context:component-scan>
*Bean
*   作用:用於把當前方法的返回值作為bean物件存入Spring的IOC容器中(Map結構:<key ,value>  key => id ,value=>要建立的物件)
*   屬性:
*           name:用於指定bean的id 預設值:不寫時預設值當前方法的名稱
*           細節:當我們使用註解配置方法時。如果方法有引數,spring框架會去容器查詢
*           又名沒有可以使用的bean物件,查詢的方式和Autowired的方法是一樣的
*           */
@Configuration
@ComponentScan(basePackages = "com.itheima")
public class SpringConfiguration {
    //建立一個QueryRunner物件
    @Bean(name = "runner")
    public QueryRunner createQueryRunner(DataSource dataSource){
        return new QueryRunner(dataSource);
    }
    @Bean(name ="dataSource")
    public DataSource createDataSource() throws PropertyVetoException {
        ComboPooledDataSource ds = new ComboPooledDataSource();
        ds.setDriverClass("com.mysql.cj.jdbc.Driver");
        ds.setJdbcUrl("jdbc:mysql://localhost:3306/eesy?serverTimezone=UTC&useSSL=false&useUnicode=true &characterEncoding=UTF-8");
        ds.setUser("root");
        ds.setPassword("123456");
        return ds;
    }
}

在這裡插入圖片描述

相關文章