spring基础

前言

这是一篇主要说spring framework部分的。Spring框架绝对必要的所有技术:控制反转(IoC)容器,面向切面编程(AOP)技术。官网上讲Ioc也是DI( IoC is also known as dependency injection (DI))。

一,概念

Spring是一个生态,里面是一个全家桶有很多产品。其中spring framework是最基本的框架。
spring framework:spring是一个一站式的轻量级框架。(IOC控制反转(DI依赖注入))
控制反转(IOC):将创建对象的权利交给spring,spring创建对象后放到容器中,给需要的类中注入进去。iOC
依赖注入(DI):给对象的属性设置值。
bean:Spring IoC容器管理一个或多个bean。这些bean是使用你提供给容器的配置元数据创建的(例如,以XML 定义的形式 )。Bean是由Spring IoC容器实例化,组装和以其他方式管理的对象。

二,IOC(控制反转)Inversion of Control

原理高级示图:
spring Ioc

控制反转:将创建对象的权利交给spring,spring创建对象后放到容器中,给需要的类中注入进去。

创建对像的方式:
1,构造方法创建对象

<!--创建user对象-->
    <bean id="user" class="com.stu.ioc_a1.User" scope="singleton"></bean>

2,静态工厂
方法式静态的。

<!--  静态工厂获取user对象 factory-method是获取哪一个方法 -->
    <bean id="user01" class="com.stu.ioc_a1.UserStaticFactory" factory-method="getUser"></bean>

3,实例工厂

<!--实例工厂获取user对象 创建工厂对象,2获取user对象-->
<bean id="factory" class="com.stu.ioc_a1.UserFactory" ></bean>
<bean id="user02" factory-bean="factory" factory-method="getUser"></bean>

获取对象:

	//读取xml文件,
    ApplicationContext cont = new ClassPathXmlApplicationContext("ApplicationContext.xml");
    // FileSystemXmlApplicationContext
    //加载绝对路经下的文件

    //获取对象
    User user = (User) cont.getBean("user");
    User user2 = cont.getBean("user",User.class);

三,DI(依赖注入)dependency injection

给对象的属性设置值。

注入的方式:

  1. set方式注入
    前提:注入的对象必须要有set方法。spring通过调用set方法来给属性赋值。
<bean id="(类名)" class="(包名+类名)">
	<!--设置值 property设置属性ref设置对象的属性值-->
    <property name="(对象属性)" value="(值)"/>
</bean>
  1. 构造方式注入
    前提:要有有参构造方法。
<bean id="(类名)" class="(包名+类名)">
	<!--通过反射调用有参构造ref设置引用对象类型-->
    <constructor-arg name="(对象属性)" value="(值)"></constructor-arg> 
</bean>

3,p名称空间和c名称空间注入值
p名称空间是对set的简写,c名称空间是对构造注入的简写。

<!--p名称空间-->
<bean id="(类名)" class="(包名+类名)" p:(对象属性)="(值)"..>
</bean>
<!--c名称空间注入-->
<bean id="(类名)" class="(包名+类名)" c:(对象属性)="(值)"..> 
</bean>

并要添加xml里beans标签属性:

xmlns:p="http://www.springframework.org/schema/p"<!--p-->
xmlns:c="http://www.springframework.org/schema/c"<!--c-->

4,复杂数据注入

四,注解方式的Ioc和DI

1,开启注解扫描,让我们加注解可以被spring扫描到。
在xml文件中添加包扫描。

<!--    包扫描器,会spring会扫描包下所有的类,这些类上有指定的注解
    如果有指定的注解,
    spring就会创建对象,并存储再ioc中
-->
    <context:component-scan base-package="包路径"/>

2,添加注解
在相应的类或属性上添加注解。

3,注解
loc中有:
@Component,@Repository,@Service ,@Controller

如果你理解了Ioc是什么就会理解这4个注解使用来干什么的。他们是用注解的方式,让spring扫描到该类,添加到spring容器中,创建bean。
下面的DI也是如此。

DI中有:
自动注入:@Autowired给类属性注入,到spring容器类里找子类;@Qualifier(“子类”):指定子类
@Value("#{类名}"):可以注入对象属性,@Value(“值”):给基本类型属性注入值。
@Resource(name=“类名”):属于jdk的注解

这篇有一些是我自己的理解。如有理解错误,欢迎指出,我们共同进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值