方便解耦,简化开发,Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理,这也是IOC的作用。
IOC就是控制反转,将创建对象的过程交给spring进行管理,可以用来减低计算机代码之间的耦合度。
IOC的实现流程:
① 解析xml文档;
② 工厂模式;//将创建对象的任务交给工厂,解耦的重要步骤。
③ 采用反射设计模式创建对象
我们创建一个maven工程,并导入相应的依赖坐标
org.springframework
spring-context
5.0.2.RELEASE
commons-logging
commons-logging
1.2
log4j
log4j
1.2.12
junit
junit
4.12
test
然后编写核心配置文件,在resources目录下创建
我们创建一个实体类,并定义一个hello方法
我们在xml配置文件中,通过IOC配置创建对象,在这里我们需要理解一个概念:bean,我们可以将bean理解为类的代理或者是类的设计图。
我们先简单的通过Spring来创建一个对象实例
创建一个DemoTest类,注意在test目录下的java测试根目录创建。
public void run1(){
//加载配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取对象
Demo demo = (Demo) ac.getBean("Demo");
demo.hello();
}
然后我们通过xml配置的方式,通过对bean的管理来对创建的对象进行依赖注入。
首先创建一个User类
然后我们在xml文件中对其注入
这种方式称为属性的set方法注入,顾名思义,我们需要生成属性的set方法
我们将set方法注释,发现注入失败。
我们还可以通过构造器的方式对属性进行依赖注入
然后我们来介绍一些特殊属性的注入,array、list、map
依然是新建一个Collection类,并生成set方法,并通过property的方式注入
wkx
123
www
ww
pis
dal
以上是通过xml配置的方式来创建对象以及依赖注入,接来下介绍用注解的方式创建对象和注入依赖。
@Component 普通的类 //默认当前类名就是ID名称,首字母小写
@Controller 表现层
@Service 业务层
@Repository 持久层
这四种方式在Spring框架中创建对象时,使用方式基本一致。我们以Component为例
首先需要在xml文件中开启注解扫描
然后在需要管理的类上添加@Component注解即可。
@Value 用于注入普通类型(String,int,double等类型)
@Autowired 默认按类型进行自动装配(引用类型)
@Qualifier 不能单独使用必须和@Autowired一起使用,强制使用名称注入
@Resource Java提供的注解,也被支持。使用name属性,按名称注入
常用的是前两个注解方式
@Component
public class Annotation {
@Value("16")
private Integer age;
@Value("王凯先")
private String name;
}
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Annotation annotation = (Annotation) ac.getBean("annotation");
System.out.println(annotation);
Spring框架基础入门2:AOP--面向切面编程