一.spring IOC
在学习spring时,刚开始的时候,弄清楚,spring的ioc,控制反转机制,将普通的Java对象(POJO),进行管理实例化,不再像以前一样自己直接new出来了,而是由spring容器直接创建并进行管理。POJO之间的依赖关系也有spring容器直接管理,可以降低耦合度。
简单来说,spring框架就是对你的Java对象进行管理,不用你直接用代码new出来了,你只要告诉spring你要什么,它会,直接实例化Java对象给你。下面所说bean,也就是Java对象。
所以,在使用spring容器之前,要进行相应的配置,告诉spring容器要实例化哪些对象。
二.spring的IOC注入的三种方式:
1.使用xml配置beans
在上一篇的maven项目下的resource文件下创建配置文件xml,也可以直接在applicationContext.xml中直接配置。
利用xml配置之前,需要class类信息,所以要创建class类,之后再xml中映射到相应的class类。
流程:1.创建类 2.再xml文件做映射
1)创建beans.xml 配置文件,加载到启动类的中。
2)创建实体类Dog类,并且配置bean映射
在进行属性注入时,一定要有setter .getter 方法
public class Dog {
private String kind;
private String name;
private String color;
...setter
...getter
....}
xml的映射文件:
运行结果:
2.使用注解配置bean
1)常用的注解:
- 注解
- @Component 代表一个普通的bean
- 下面三个注解是包含@Component的,只不过是用来表明用在明确的地方,MVC模式的用途
- @Repository 代表持久层的bean
- @Service 代表业务层的bean
- @Controller 代表控制层的bean
@Component
public class Cat {
private String kind;
private String name;
..setter..
..getter..
}
使用上面注解即可配置好bean了,但是还要再配置文件中声明这些注解生效,所以到xml下添加声明;
然后,就可以使用spring容器创建相应的bean了。
3.使用基于Java配置类启动容器
1)使用@Configuration注解配置bean信息
package com.jun.domain;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author jun
* @time 2018/10/10
*/
//表示这是一个配置类
@Configuration
public class Pets {
@Bean
public Pig pig(){
return new Pig();//Pig是一个实体类,只有setter,getter方法
}
//返回一个bean,名字即为方法的名字
@Bean
public Fish fish(){
return new Fish();//Fish是一个实体类,只有setter,getter方法
}
}
2)然后到启动类中配置信息
//用来启动springIOC容器,启动类
public class ApplicationMain {
public static void main(String[] args){
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("classpath:applicationContext.xml","classpath:beans.xml");
// FileSystemXmlApplicationContext 绝对路径下使用
// AnnotationConfigApplicationContext Java配置注解下使用
ApplicationContext context = new AnnotationConfigApplicationContext(Pets.class);
Pig pig = (Pig) context.getBean("pig");
Fish fish = (Fish)context.getBean("fish");
System.out.println(pig+"\n"+fish);
......