1.什么是spring框架
1.spring是一款开源框架,解决企业开发的复杂性。
2.spring框架提供了三大核心思想:IOC、AOP、DI
IOC:控制反转。创建对象并管理生命周期。
AOP:面向切面编程。不改变源码对代码进行扩展。
DI:依赖注入。
3.spring框架特点:
1.方便解耦,简化开发。
2.AOP编程的支持--更方便对源码进行扩展
3.声明式事务的支持
4.方便集成各种优秀框架--mybatis hibernate mybtais-plus等
5.方便程序的测试--spring提供了自己的单元测试
1.2为什么使用spring框架
初级
工厂模式
工厂模式虽然解决了等号右边创建对象的依赖的问题,但是没有解决等于左边的依赖问题。可以使用接口。如果这时1000个依赖Food的类,Food即使升级为Food1也只需要改变FoodFactory中这一处代码即可。我们自己通过工厂模式+接口虽然解决了上面类与类之间的依赖关系。但是还有很多考虑不周的地方,那么是否存在一款框架能更好的解决上面的依赖关系吗?--有。spring提供的IOC技术
2.spring-IOC
控制反转(Inversion of Control,缩写IOC),是面向对象编程中的一种设计原则,可以用来降低计算机代码之间的耦合度。
--先注入依赖--把类交与spring容器进行管理--测试类中加载spring文件利用getBean()随时可调用类的内容
其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,交于spring容器来帮助创建对象。
1.依赖--还是和springMVC一样的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
2.创建spring配置文件
<!--交于spring创建bean对象
id:bean的唯一标识
class:表示哪个类交于spring创建
-->
<bean id="f" class="com.wjy.demo.Food"></bean>
</beans>
3.测试
public class Test01 {
public static void main(String[] args) {
//1.加载spring的配置文件
ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring.xml");
//2.从spring容器中获取指定的对象
//获取spring容器中bean的方式
//方式1,需要强制转化
/* IFood f =(IFood) app.getBean("f");
f.show();
//方式2,如果容器中存放多个匹配的对象时,则出现错误(适用于一个时)
IFood bean = app.getBean(IFood.class);
bean.show();
//方式3,结合上面两种(推荐使用)
IFood bean1 = app.getBean("f2", IFood.class);
bean1.show();*/
/* ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring02.xml");
IFood food = (IFood) app.getBean("food");
food.show();*/
}
}
2.1获取spring的bean的方式
获取spring容器中bean的方式
①通过id获取--需要强制转化
IFood f =(IFood) app.getBean("f");
f.show();
②通过反射类--适用于一个时
IFood bean = app.getBean(IFood.class);
bean.show();
③结合上面两种(推荐)
IFood bean1 = app.getBean("f2", IFood.class);
bean1.show();
2.2使用spring注解完成bean的创建
上面我们通过spring的xml文件来创建和管理bean对象,如果我们的bean有100个,我们就需要在xml文件中创建100bean标签。这样非常麻烦。 我们可以使用注解@完成spring的bean创建。
1.修改spring配置文件
<!--指定扫描的包-->
<context:component-scan base-package="com.wjy.demo"/>
</beans>
在类上使用注解
@Component //表示该类交于spring容器创建。前提:该类能被spring扫描到 value表示为该bean起名称。如果没有value属性 默认为类的首字母小写
public class Food implements IFood {
public void show() {
System.out.println("food1~~~~~~~~~~~~~~~~~~~~~~
标签:事务,--,Spring,笔记,int,bean,spring,public From: https://blog.csdn.net/m0_74194490/article/details/140429356