对控制反转和依赖注入的讲解
一个班级是由老师和同学组成的,那么班级就依赖于多个老师和同学。spring提供依赖注入的功能,使得我们管理各个对象之间的关系。
班级,同学和老师这3个对象的关系,我们需要一个容器。在spring中把每个对象称为spring bean(简称bean),而spring管理这些bean的容器,称为spring ioc容器
1,通过@bean装配到容器
package com.hengrui.entity.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.hengrui.entity.User;
/**
* 生成容器装配bean
* @author Administrator
*
*/
@Configuration
public class AppConfig {
/**
* 将对象装配到bean中,起名user,默认是方法名
* @return
*/
@Bean("user")
public User initUser() {
User user = new User();
user.setId(34);
user.setName("zhang");
user.setNote("note_1");
return user;
}
}
package com.hengrui.entity;
public class User {
private Integer id;
private String name;
private String note;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", note=" + note + "]";
}
}
package com.hengrui;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.hengrui.entity.User;
import com.hengrui.entity.config.AppConfig;
/**
* 读取配置文件
* @author Administrator
*
*/
public class Application {
private static final Logger log = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
User user = context.getBean(User.class);
log.info(user.getId()+"");
}
}