菜鸟升级-----Spring框架学习第一天----IOC入门---Bean模块的配置

Spring的优点

1,轻量级
2,方便解耦和
3,方便整合框架
4,AOP的开发思想
5,是程序员的春天

为什么说Spring是javaSE/EE的一站式开发工具

web层 :SpringMVC
service层 :Spring的Bean管理,声明式事物
dao层 :JDBC模块

Spring的核心

AOP面向切面编程
IOC反转控制

IOC的入门

1,1引入jar包 初级入门就引 beans ,core, context, spel这几块的包

2,创建接口,创建其实现类

3,创建配置文件applicationContext.xml

	</bean id="bean的名字" class="实现类的全路径">

4,创建测试类,并创建工厂和反射实现控制反转

	ApplicationContext applicationContext=new ClassPathXmlApplicationContext("xml配置文件的名字");
	实现类 aa=(实现类)applicationContext.getBean("bean的名字");
	aa.方法();调用实现方法;

DI的方法

DI和IOC的区别

IOC是控制反转是用来管理类的
DI是依赖注入,需要在IOC内注入IOC管理的类的属性

工厂类ApplicationContext的两个实现方法

ClassPathXmlApplicationContext

是用来调用本工程内的xml,是用的相对路径进行调用的

FileSystemXmlApplicationContext

是用来调用文件系统内的xml,使用了绝对路径进行调用

XML文件的属性及其作用

约束

spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\htmlxsd-configuration.html在这个路径下的html文件内找约束。

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:jdbc="http://www.springframework.org/schema/cache"
    xmlns:p="http://www.springframework.org/schema/p"
     xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/jdbc/spring-cache.xsd"> 

beans标签内的标签属性

Bean的标签属性

name :表示bean的名字,可以用特殊字符

id :表示bean的名字,不能用特殊字符

class :需要管理的类或者action的路径

scope :设置bean的作用范围

singleton:默认的,单利模式(常用)
prototype:多例模式(常用)管理action的时候用
request:应用在web项目中Spring创建这个类后,会把类存入request中
session;应用在web项目中Spring创建这个类后,会把类存入session中
globalsession:应用在web项目中,必须在porlet环境下使用,

init-method和destory-method单例方法可以用

控制bean的生命周期
init-method : bean初始化的时候执行的方法
destroy-method:bean销毁时执行的方法(bean是单例)

import的标签属性导入其他的xml进行整合,是spring多模块开发最常用的

resource需要导入的xml的路径名包括后缀

#spring属性注入

构造方法注入

实例化类中创建一个有参构造方法,
private String name;
private Double price;
public void car(String name.Double price){
this.name=name;
this.price=price;
}
然后在xml中配置

<bean id="car" class="">
		<construct-arg name="name" value="奔驰"/>
		<construct-arg name="price" value="10000"/>
	</bean>

在测试类中调用
ClassPathXmlApplicationContext cpxac=new ClassPathXmlApplicationContext(“applicationContext.xml”);
Car car=(Car)cpxac.getBean(“bean名”);

set方法注入(一般用set)

set方法注入
先在类中创建set方法,然后在xml中配置

<bean id="car" class="">
<property name="name" value="奔驰"/>
<property name="price" value="10000"/>
</bean>

在测试类中调用

ClassPathXmlApplicationContext cpxac=new ClassPathXmlApplicationContext(“applicationContext.xml”);
Car car=(Car)cpxac.getBean(“bean名”);

注入属性是对象类型

先创建一个set方法,然后在xml中配置

<bean id="car" class="">
		<property name="name" value="奔驰"/>
		<property name="car" ref="属性注入car的bean的id"/>
	</bean>

在测试类中调用

ClassPathXmlApplicationContext cpxac=new ClassPathXmlApplicationContext(“applicationContext.xml”);
Car car=(Car)cpxac.getBean(“bean名”);

p名称空间注入

先把xmlns="http://www.springframework.org/schema/beans"复制一下
改成xmlns:p=“http://www.springframework.org/schema/p
然后再在xml的baen内进行配置

<bean id="car" class=" " p:name="奔驰" p:price="30000"/>

注入的是对象应该这样

<bean id="car" class=" " p:name="奔驰" p:car-ref="car的bean注入id"/>

SpEl注入

spel完成属性的注入:就是在普通的注入的value赋值时用#{}代替大括号里面有很多可以填写的东西
如果只是字符需要加双引号,如果是引用的方法则直接在里面用类名.方法或属性名就ok

<bean id="car" class="">
	<property name="name" value="#{'萨满蹦子'}"/>
	<property name="car" value="#{car的bean属性注入的id}"/>
	<property name="car" value="#{Car.name}"/>
	<property name="car" value="#{Car.name}"/>
</bean>

复杂类型的注入

数组类型和list类型一样

<bean id="car" class="">
	<property nam="name">
		<list>		
			<value>往东</value>
			<value>往西</value>
			<value>往南</value>
			<value>往北</value>
		</list>

注入set集合


		<set>		
			<value>往东</value>
			<value>往西</value>
			<value>往南</value>
			<value>往北</value>
		</set>

注入map集合

<map>		
			<entry key="aa" value="11"/>
			<entry key="bb" value="12"/>
		</map>
</property>
</bean>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值