spring IOC容器

搭建Spring开发环境

1.引入jar包(maven工程通过配置文件)
2.编写上下文配置文件
3.将java类注册到配置文件中
4.测试spring IOC容器

获取spring IOC容器对象
当IOC容器初始化成功后 立即创建上下文中配置的java类对应的对象 在IOC容器中 javabean默认为单例模式(只会创建一个对象)

注入

一 属性注入。
属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象
属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值
若字面值中包含特殊字符,可以使用 <![CDATA[]]> 把字面值包裹起来。
在 Bean 的配置文件中, 可以通过 元素或 ref 属性为 Bean 的属性或构造器参数指定对 Bean 的引用.

二 构造器注入。
通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。
构造器注入在 元素里声明属性。
构造器注入有两种方式:
1、按照参数的顺序,需要使用属性:index,index从0开始

<bean id="userService" class="com.zzxtit.springboot.ioc.di.UserService">
<constructor-arg index="0" ref="userDao" ></constructor-arg>
<constructor-arg index="1" value="程序设计" ></constructor-arg>
<constructor-arg index="2" value="19" ></constructor-arg>
</bean>

  

2、按照参数类型的顺序,进行注入:使用属性type, 基本数据类型直接写类型名称,String可以写成String 或者java.lang.String, 引用类型需要写全类名。

<bean id="userService" class="com.zzxtit.springboot.ioc.di.UserService">
<constructor-arg type="com.zzxtit.springboot.ioc.di.UserDao" ref="udao" ></constructor-arg>
<constructor-arg type="java.lang.String" value="程序设计" ></constructor-arg>
<constructor-arg type="int" value="19" ></constructor-arg>
</bean>

<bean id="userDao" class="com.zzxtit.springboot.ioc.di.UserDao">
<property name="userName" value="root"></property>
<property name="dbName" value="mysql"></property>
</bean> 

注入细节

使用set map list props参数时 需要现在xml中配置上下文
xmlns:util="http://www.springframework.org/schema/util
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
然后即可使用标签如 util:list 注意:使用util标签之前,必须加上UTIL命名空间及配置文件

专项配置信息,专项配置文件
需要先在xml中配置上下文 xmlns:context="http://www.springframework.org/schema/context http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd 在properties文件中写入参数 然后在xml文件中使用标签<context:property-placeholder location=“properties路径”/>
p 命名空间
需要先在xml中配置上下文
xmlns:p=“http://www.springframework.org/schema/p”

<bean id="userDao" class="com.zzxtit.springboot.ioc.di.UserDao" p:userName="root" p:dbName="mysql"> 

可直接赋值

Spring表达式语言:SpEL

是一个支持运行时查询和操作对象图的强大的表达式语言。
语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大括号中的字符都将被认为是 SpEL
SpEL 为 bean 的属性进行动态赋值提供了便利
SpEL作用:
1.通过 bean 的 id 对 bean 进行引用
2.调用方法以及引用对象中的属性
3.计算表达式的值
4.正则表达式的匹配
可以引用其他对象者属性。调用其他对象的方法,还可以进行链式操作。
Spring EL 支持大多数的数学操作符、逻辑操作符、关系操作符。
 关系操作符
包括:等于 (==, eq),不等于 (!=, ne),小于 (<, lt),,小于等于(<= , le),大于(>, gt),大于等于 (>=, ge)
 逻辑操作符
包括:and,or,and not(!)
 数学操作符
包括:加 (+),减 (-),乘 (*),除 (/),取模 (%),幂指数 (^)。

依赖注入—自动装配

Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件.
特定组件包括:
@Component: 基本注解, 标识了一个受 Spring 管理的组件
@Respository: 标识持久层组件
@Service: 标识服务层(业务层)组件
@Controller: 标识表现层组件

@Autowired 注解自动装配具有兼容类型的单个 Bean属性 还可以在set方法上注解同样有效。
当一接口有多个实现类 需要选择注入某一实现类是可以直接通过声明相同名称来确认
private UserDao userMysqlDao;
也可以用注解**@Qualifier**(“实现类名”)来选择注入哪一个。如

@Autowired
 @Qualifier("userOracleDao")
 private UserDao userDao;

否则会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值