Spring Boot基本概念

Bean是指符合Bean规范的Java类。

IoC

控制反转IoC,传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由IoC容器来控制对象的创建。

SpringBoot 通过全注解的方式来代替Spring的通过XML的描述来创建对象。

IoC容器具备两个基本功能:

  • 通过描述管理Bean,发布和获取Bean
  • 通过描述完成Bean之间的依赖关系

org.springframework.beans.factory.BeanFactory有多个获取Bean的方法,通过类型和名字,影响到DI,AppilicationContext接口,AnnotationConfigApplicationContext一个基于注解的IoC容器。

构建Ioc容器

定义POJO

public class User {}

定义配置文件

@Configuration
public class AppConfig {
@Bean(name="user")
public User initUser () {
return new User();
}
}

构建并获取Bean

public class Test {
public static void main(String[] args) {
AppilicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
User user = ctx.getBean(User.class);
}
}

装配Bean

通过扫描装配

@Component("user")		// 表明会被扫描装配并设置Bean名称
public class User {
@Value("1") // 注入的对应值
private Long id;
}

第三方Bean类似定义

@Configuration
@ComponentScan(basePackges = {"com.xxx.yyy"}, excludeFilters = {@Filter(classes = {xxx.class})}) // 设定扫描的包范围和排除的类
public class AppConfig {}

很多注解已经包含了@Compnonent

DI

依赖注入DI,先通过类型去找Bean,如果有多个类型的Bean,再通过修改属性更细分的类名或者修改属性的名称来得到唯一的Bean;如果没有出现指定类型Bean时可以设置required=false表示在用到的时候允许为null;也可以增加@Primary来修改Bean的优先级;也可以在@Autowired后增加@Qualifier("xx")特制名称查询。

class xxService {
/** 通过构造器注入---begin **/
private JavaMailSender javaMailSender;

@Autowired
public AccountEmailServiceImpl(JavaMailSender javaMailSender){
this.javaMailSender = javaMailSender;
}
/** 通过构造器注入---end **/

/** 通过set方法注入---begin **/
private JavaMailSender javaMailSender;
@Autowired
public void setJavaMailSender(JavaMailSender javaMailSender){
this.javaMailSender = javaMailSender;
}
/** 通过set方法注入---end **/

/** 通过field注入 **/
@Autowired
private JavaMailSender javaMailSender;
}

生命周期

https://github.com/dyc87112/SpringBoot-Learning
https://github.com/JeffLi1993/springboot-learning-example
https://github.com/ityouknow/spring-boot-examples
https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh
https://waylau.gitbooks.io/spring-framework-4-reference/
https://github.com/qibaoguang/Spring-Boot-Reference-Guide