Spring基础第一章

目录

SpringIOC应用

IOC概念:

a.采用注入方式建立对象关系

b.Dependency Injection 依赖注入

二、Spring包含的属性

一、spring创建Bean对象的控制

例子

C.指定对象销毁方法

三、Spring容器—>管理组件及对象关系

四、参数注入、基于注解的组件扫描

Spring的所需要的组件

*a.注入字符串,数值单个数值

*b.注入bean对象(raf引入用的多)

c注入集合*list,set,map,*properties

d.spring表达式注入


SpringIOC应用

管理对象

创建、初始化、释放资源、销毁

IOC概念:

Iversion of Control 控制反转或反向控制(就好像大人给小孩吃什么就吃什么,原来小孩想吃什么大人做什么)

控制反转:改变了对象获取方式,之前编码方式采用new构造器方式获取对象;IOC中采用由容器创建对象之后注入进来使用。

A—>B把A注入B

SetB

 

维护对象关系(注入用property)

a.采用注入方式建立对象关系

b.Dependency Injection 依赖注入

   依赖注入:set方法注入,构造器注入

 

获取一下set,get方法

<bean id=”相当于java里的变量”  class=”相对应的包.类名(相当于java里的对象)”>

<!--set注入-->

<!—信息注入-->

<property name=”cpu” value=”相对应的属性,传对象对应的值”>

</property>

</bean>

------------------------------------------------------------------------

 <bean id="q1" class="org.ac.com.Phone">

     <!-- 构造器注入 -->配置两个组件是由于有两个参数

     <constructor-arg  index=”0代表第一个参数”  value=”代表的值”>

     </constructor-arg>

   </bean>

ref(应用)就是把p1,p2引用到s1中,也是注入到s1,就像机器把零件组装起来。

  搭建SpringIOC开发环境

--引入相关jar包

--在src添加applicationConte.xml

Spring包含的属性

spring创建Bean对象的控制

控制对象创建

方式(使用范围)在<bean>元素中使用scope属性控制scope可以支持singleton或prototype默认值是singleton。

<bean scope=”singleton”>该组件在Spring容器里只有一个bean对象。

<bean scope=”prototype”>该组件每次

Ac.getBean(“id”);都返回一个新的对象

Public class xxx{

 Private User user;(像这种就不适合用单例,适合用原型)

Public void f1(){

对user操作

}

}

例子

创建一个org.song.bean包,类名是ExampleBean

Package org.song.bean;

Public class ExampleBean{

     写个构造函数 Public ExampleBean(){

//System.out.println(“解析其他配置文件”);

}

Public void init(){

System.out.println(“解析其他配置文件”);

}

     Public void execute(){

     System.out.println(“调用execute方法”);

}

}

在applicationContext.xml用spring框架中创建一个组件

声明一个bean (prototype意思是原型)

<bean id=”e1” scope=”prototype”

class=” org.song.bean. ExampleBean”></bean> class里面写的要求包名类名保持一致。

现在开始写个测试类

包名org.song.bean

类名为test

Public class test{

Public static void main (String[] args){

String conf =”applicationContext.xml”;

ApplicationContext ac = new ClassPathXmlApplicationContext(conf);

ExampleBean e1 = Ac.getbean(“e1”,ExampleBean.class);

E1.execute();

}

}

指定对象初始化方法

利用<bean>元素的init-method指定。

当创建对象后自动执行init-method方法

单实例是唯一性只调一次,执行一次调用一次。

<bean id=”e1” scope=”singleton” init-method=”init” destroy-method=”mydestory”Class=“org.song.com.ExampleBean”>

</bean>

指定对象销毁方法

Public void mydestory(){

System.out.pritnln(“释放资源”);

}

利用<bean>元素的destroy-method指定。

满足下面条件才有效

--组件对象为单例模式

--调用AbstractApplicationContext容器对象的close()方法。

d.控制单例对象创建时机在默认情况下,单例对象是spring容器创建时实例化;

可以使用<bean>元素的lazy-init=true属性将创建时机推迟到getBean()方法调用时。

Spring容器—>管理组件及对象关系

a.创建ApplicationContext对象

b.向applicationContext.xml配置<bean>

c.利用ApplicationContext对象getBean()

参数注入、基于注解的组件扫描

Spring的所需要的组件

自动注入

<bean autowire=””>

用于指定自动注入规则。可以使用bytype,byname,constructor等。用于简化注入配置。

使用bytype类型匹配注入需要注意,有两个及其以上匹配会出异常。

各种类型信息的注入配置格式

*a.注入字符串,数值单个数值

<property name=”” value=””></property>这是set注入的方式

*b.注入bean对象(raf引入用的多)

c注入集合*list,set,map,*properties

d.spring表达式注入

#{表达式}

#{id名.属性}或{id名.key}

如果是对象属性,需要有getxxx方法。

利用注解配置应用IOC

在JDK5.0时追加一些新特性

一直在用List<String>list

for(String s:list){}

Integer i=10;自动装箱。

注解:在类定义,方法定义,成员变量定义前面使用,格式为@注解标记名

组件自动扫描

可以按指定的包路径,将包下所有组件扫描,如果发现组件定义前有一下标记,会将组件扫描到Spring容器。

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的action) 
@Repository用于标注数据访问组件,即DAO组件. 
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注

@Named(需要引入第三方标准包)

@Scope控制对象创建

@PostConstrust指定init-method

@PreDestroy指定destroy-method

注入注解

@Resource:可以在变量定义前或setxxx方法应用与Autowired都发生的效果一样。

@Autowired:自动注入可以在变量定义前或setxx放啊前应用

一般使用时,功能等价,都可以实现注入。如果不存在多个匹配类型,使用@Resource或@Autowired都可以。

如果存在多个匹配类型,建议按名称注入

@Resource(name=”指定名称”)【按照指定名称去找,找到就正常运行找不到说明就错误】或

@Autowired

@Qualifier(“匹配名称”)按照指定名称来进行,找到就进,找不到就错。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值