本篇文章繼續上篇文章講解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