Spring学习笔记二(Bean注入的几种方式)
来源:互联网 发布:单片机程序员工资 编辑:程序博客网 时间:2024/06/06 01:48
1.前言
上一篇博客从宏观上讲解了一下Spring的知识,下面这篇来着重讲解一下有关Bean注入的几种方式。
2.Bean注入的几种方式
2.1 类构造器初始化
这也是默认的方式,在上一篇博客中也有所体现。直接在applicationContext.xml配置文件中,配置Bean标签即可
<span style="font-family:SimSun;font-size:18px;"><!-- 实例工厂初始化 --><!-- 必须先创建实例工厂对应的Bean --><bean id="Bean2Create" class="com.ioc.Bean2Create"></bean></span>
2.2 静态工厂初始化
工厂方法
<span style="font-family:SimSun;font-size:18px;">//静态工厂方法public class Bean2Factory {//工厂方法public static Bean getBeanFactory(){return new Bean();}}</span>
配置文件中配置<span style="font-family:SimSun;font-size:18px;"><!-- 通过静态工厂进行注入,后面放置的是静态工厂的方法 --><!-- class:静态工厂的类名 --><!-- factory-method:静态工厂中用于创建对象的方法 --><bean id="Bean2Factory" class="com.ioc.Bean2Factory" factory-method="getBeanFactory"></bean></span>
工厂获取Bean<span style="font-family:SimSun;font-size:18px;">package com.junit;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ioc.Bean;import com.ioc.Bean3;public class Bean2FactoryTest {@Testpublic void test() {ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");//通过工厂进行获取BeanBean bean=ctx.getBean("Bean2Factory", Bean.class);bean.test();/*通过实例工厂进行初始化*/Bean3 Bean3=ctx.getBean("Bean3", Bean3.class);Bean3.test();}}</span>2.3 实例工厂获取
实例工厂与静态工厂很类似,只不过静态工厂采取的静态方法而已。主要区别在配置文件上。必须先实例化实例工厂,然后才可以实例化工厂创建的对象
<span style="font-family:SimSun;font-size:18px;"><!-- 实例工厂初始化 --><!-- 必须先创建实例工厂对应的Bean --><bean id="Bean2Create" class="com.ioc.Bean2Create"></bean><bean id="Bean3" factory-bean="Bean2Create" factory-method="getBean"><property name="Name" value="#{'123张是哪'}"/><property name="country"><list><value>"sdfsadf"</value><value>"sdfsadf"</value><value>"sdfsadf"</value><value>"sdfsadf"</value><value>"sdfsadf"</value></list></property><property name="names"><set><value>"sdfsadf"</value><value>"54545"</value><value>"sdfsadf"</value><value>"sdfsadf"</value><value>"sdfsadf"</value></set></property></bean></span>
3.Bean的作用域和生命周期
3.1 作用域
Spring默认创建的对象是单例模式的对象
设置Bean的作用域,通过bean元素的scope属性完成
<beanid="bean4" class="cn.itcast.bean.xml.Bean1"scope="prototype">
scope取值范围:
• singleton:单例
• prototype:非单例
• Request:创建该Bean,并调用request.setAttribute(“beanId”,beanObj);
• Session:创建该Bean,并调用request.getSession().setAttribute(“beanId”,beanObj);
• globalSession:全局Session
分布式服务器
3.2 生命周期
Bean的初始化过程,已经被Spring完全包装完成,无法人工干预。但是Spring为我们预留了两个回调的方法。这也是Bean的两个生命周期的方法,可以在配置文件中进行定义。
<span style="font-family:SimSun;font-size:18px;"><bean id="bean5" class="cn.itcast.bean.xml.Bean1" init-method="init" destroy-method="destory"></bean></span>
或者也可以通过注解的形式进行定义:@PostConstruct和@PreDestroy
4.属性和集合注入
4.1 属性注入
<span style="font-family:SimSun;font-size:18px;"> <!-- 构造器初始化 --> <!-- Bean的作用域,默认值为simple --><bean id="userService" class="com.test.UserService" scope="prototype"><constructor-arg index="1" value="123"/><constructor-arg index="0" value="女"/><property name="id" value="123"/><property name="name" value="xiaoming"/></bean></span>最常用的是属性注入
4.2 集合注入
常用的集合有list、数组、Set、Map、Properties等,注入的方式如下
<span style="font-family:SimSun;font-size:18px;"><!-- 集合注入 --><bean id="bean10" class="cn.itcast.bean.xml.Bean10"><property name="country"><list><value>中国</value><value>美国</value><value>韩国</value><value>意大利</value></list></property><property name="names"><set><value>jock</value><value>jockme</value><value>zahc</value><value>pkzahc</value></set></property><property name="likes"><props><prop key="BADU">百度</prop><prop key="NQ">网秦</prop><prop key="SINA">新浪</prop></props></property></bean></span>
5.注解开发
如果需要使用注解的话,需要在配置文件中定义类的加载,Spring通过XML格式,定义加入扫描的路径。
<span style="font-family:SimSun;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 开启自动扫描路径 ,含子包路径--><context:component-scan base-package="cn.itcast"/></beans></span>
常用的注解标签
1.@Component、@Repository、@Service、@Controller,这三种的注解功能完全相同,仅仅是名称上的区别而已。
2.@Autowired:自动装配注入属性
@Qualifier:自动注入对象类型的属性
@Value:为属性注入的简单类型的值
@Resource:与@Autowired功能类似,自动注入Bean属性
@Scope:为当前Bean指定Scope参数
<span style="font-family:SimSun;font-size:18px;">package com.ioc;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Component("Bean4")public class Bean4 {//自动注入值类型@Autowired@Value("haha")private String name;/*@Autowired()@Qualifier("Bean44")*///自动注入引用类型@Resource(name="Bean44")private Bean5 bean5;public void test(){bean5.test();System.out.println("测试");System.out.println(name);}}</span>
- Spring学习笔记二(Bean注入的几种方式)
- Spring学习,Bean配置文件注入的几种方式
- Spring注入Bean的几种方式
- spring的注入bean的几种方式
- spring学习笔记(1)-spring依赖注入的几种方式
- Spring Ioc 之二 -依赖注入的几种方式
- Spring学习笔记(二)Spring的三种实例化Bean的方式
- (学习笔记)spring入门之Bean的依赖注入
- Spring bean的三种注入方式
- Spring学习之配置Bean几种不同的方式
- Spring学习笔记(二)IOC注入方式
- Spring学习(十八)Bean 的三种依赖注入方式介绍
- Spring的bean注入方式
- spring bean注入的方式
- Spring获取Bean的几种方式
- Spring获取Bean的几种方式
- Spring获取Bean的几种方式
- Spring获取Bean的几种方式
- #笔记#圣思园 JavaWeb 第2讲——CSS层叠样式表Cascading Style Sheets
- android4.0去掉锁屏和休眠 Power键按钮
- 什么是原子操作
- 用tomcat+花生壳搭建自己的web服务器+域名
- 暑假学习第三周
- Spring学习笔记二(Bean注入的几种方式)
- 改变复选框显示样式
- 台湾国立大学机器学习基石.听课笔记(第七讲):The VC Dimension
- [前端] canvas绘制圆、渐变、字体和图片及其他
- 各大型网站架构分析收集
- html5 canvas 实现简易马祖小游戏
- 百练 2798:2进制转化为16进制
- Linux下文件的阻塞与非阻塞对部分系统调用的影响
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求