菜鸟升级-----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="">
<property name="name" value="奔驰"/>
<property 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="">
<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方法,然后在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>

猜你喜欢

转载自blog.csdn.net/qq_42799000/article/details/81288227