参考文件https://www.jianshu.com/p/63431d63dd7e
一.Spring介绍
Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring主要两个有功能为我们的业务对象管理提供了非常便捷的方法。
DI(Dependency Injection,依赖注入)
AOP(Aspect Oriented Programming,面向切面编程)
每一个类实现了Bean的规范才可以由Spring来接管,bean的规范是:
必须是个公有(public)类
有无参构造函数
用公共方法暴露内部成员属性(getter,setter)
Spring的核心是控制反转(IOC)与面向切面编程(AOP)
控制反转:将对象的创建和维护交给Spring容器去实现(松耦合的目的)
面向切面编程: 通过预编译的方式在运行期使用动态代理的方式来实现的一种技术。
使用Spring的原因:在Spring上开发应用简单(可以控制对象的生命周期)、方便(因为管理了对象,所以获取对象实例方便)、快捷。
图片.png二.IOC与Bean容器
(接口)
接口是一种对外的说明,说明了我会提供哪些功能,但是具体的实现要实现类去具体实现
虽然我们平常所指的Bean是一个符合特定规则的类,但是在IOC容器当中把所有的对象都称之为Bean
Spring对于Bean的注入方式主要有3种:构造方法注入,setter注入,基于注解的注入。
package com.csii.spring;
public interface InterfaceDemo {
public void hello();
}
public class InterfaceImplDemo implements InterfaceDemo {
public void hello() {
System.out.println("Spring...");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
//spring会将name值的每个单词首字母转换成大写,然后再在前面拼接上"set"构成一个方法名,然后去对应的类中查找该方法,通过反射调用,实现注入。
<bean id="interfacedemo" class="spring_demo.InterfaceImplDemo">
</bean>
</beans>
public class TestDemo {
//默认的路径就是在src下面
ApplicationContext ac=new ClassPathXmlApplicationContext("Beans.xml");
@Test
void test() {
InterfaceImplDemo name=(InterfaceImplDemo) ac.getBean("interfacedemo");
name.hello();
}
}
(一)设置注入
public class InterfaceImplDemo implements InterfaceDemo {
private SpringDemo demo;
public SpringDemo getDemo() {
return demo;
}
public void setDemo(SpringDemo demo) {
this.demo = demo;
}
public void hello() {
System.out.println("Spring...");
}
}
使用ApplicationContext的子接口ClassPathXmlApplicationContext加载bean.xml的配置文件的时候,会读取bean.xml当中的内容,加载其中的类,实现注入
网友评论