spring學習總結(一)_Ioc基礎(下)

本篇文章繼續上篇文章講解Ioc基礎,這篇文章主要介紹零配置實現ioc,現在相信大家項目中也基本都是沒有了xml配置文件。廢話不多說。一起學習

代碼示例

  • BookDao.java
package com.kevin.spring.demo1.dao;

/**
 * 圖書數據訪問接口
 */
public interface BookDao {

    /**
     * 添加圖書
     *
     * @param bookName
     * @return
     */
    String addBook(String bookName);
}
  • BookDaoImpl.java
/**
 * 接口實現類
 */
@Repository
public class BookDaoImpl implements BookDao {
    /**
     * 添加圖書接口
     *
     * @param bookName
     * @return
     */
    public String addBook(String bookName) {
        return "添加圖書《" + bookName + "》成功";
    }
}
  • BookService.java
@Service
public class BookService {
    @Resource
    BookDaoImpl bookDao;

    public void storeBook(String bookName){
        String result = bookDao.addBook(bookName);
        System.out.println(result);
    }

}
  • User.java
package com.kevin.spring.demo1.entity;

import org.springframework.stereotype.Component;

@Component
public class User {

    public User() {
        System.out.println("創建User對象");
    }

    public User(String msg) {
        System.out.println("創建User對象" + msg);
    }

    public void show() {
        System.out.println("一個學生對象!");
    }
}
  • ApplicationConfig.java
package com.kevin.spring.demo1.config;

import com.kevin.spring.demo1.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.kevin.spring.demo1")
public class ApplicationConfig {

    @Bean
    public User getUser(){
        return new User("成功");
    }
}

測試類

    @org.junit.Test
    public void testBook(){
        ApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
        BookService bookService = ctx.getBean(BookService.class);
        bookService.storeBook("周杰倫");
        User user = ctx.getBean("getUser",User.class);
        user.show();
    }

運行結果

創建User對象
創建User對象成功
添加圖書《周杰倫》成功
一個學生對象!

@Configuration

@Configuration 相當於配置文件中的<beans/>

@ComponentScan

@ComponentScan相當於配置文件中的context:component-scan

@Bean

@Bean相當於<bean/>,只能註解在方法和註解上,一般在方法上使用
方法名相當於id

這裏注意上面獲取user時用的是getUser,因爲方法名相當於id

@Value獲取properties配置

  • 新建一個dev.properties文件
boy.name = kevin
boy.age = 20
  • BoyUtil.java
package com.kevin.spring.demo1.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:dev.properties")
public class BoyUtil {

    @Value("${boy.name}")
    private String name;
    @Value("${boy.age}")
    private String age;

    @Override
    public String toString() {
        return "BoyUtil{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
    //get和set方法省略
}

測試

    @org.junit.Test
    public void testBoyUtil(){
        ApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
        BoyUtil boyUtil = ctx.getBean(BoyUtil.class);
        System.out.println(boyUtil);
    }

輸出結果

創建User對象
創建User對象成功
BoyUtil{name='kevin', age='20'}

好了,springIoc基礎就暫時告一段落。玩的開心
代碼:https://github.com/runzhenghengbin/spring-study
參考:https://www.cnblogs.com/best/p/5727935.html#_label3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章