Spring核心容器 Beans

目录

Spring 框架干了什么?

Bean标签范围配置

Bean实例化三种方法

Bean的依赖注入分析

引入其他的配置文件(分模块开发)

注解:

Spring 框架干了什么?

1.读取xml文件

2.根据id标识获取Bean全限定名

3.通过反射创建Bean对象

4.返回对象

简单的Bean使用

1.配置Spring的maven坐标

2.写一个接口,一个接口的实现类

3.创建一个applicationContext.xml文件

配置<bean id="自定义一个id名" class="实现类的全路径"></bean>

4.调用:在主函数中创建一个classPathXMLApplicationContext对象,参数为xml的文件名要带上.xml,然后调用getBean方法去调用,方法中的参数为命名的id名

Bean标签范围配置

scope属性:对象的作用范围取值如下

singleton 默认值,单例的

prototype 多例的

request web项目中 Spring创建一个Bean的对象,将其存入request域中

session web项目中 Spring创建一个Bean的对象,将其存入session域中

global session web项目中应用在portlet环境,如果没有就相当于session

singleton Bean的创建的时机在加载xml文件时

生命周期:

对象创建:当应用加载,创建容器时,对象被创建

对象运行:只要容器在,对象就一直活着

对象销毁:当应用卸载,销毁容器对象就被销毁了

prototype Bean的创建时机,当调用getBean()方法时实例化Bean

生命周期:

对象创建:当使用对象时,创建新的对象实例

对象运行:只要对象在使用就一直活着

对象销毁:当对象长时间不用时,被Java的垃圾回收器收回

Bean生命周期配置

init-method:指定类中的初始化方法名称

destroy-method:指定类中销毁方法名称

Bean实例化三种方法

1.无参构造方法实例化

2.工厂静态方法实例化

3.工厂实例方法实例化

factory-method="方法名" 工厂静态方法实例化

工厂实例方法实例化

<bean id="factory" class="工厂实现类的全路径"></bean>

<bean id="getUers" factory-bean="factory" factory-method="方法名"></bean>

Bean的依赖注入分析

(将一个值写入到一个无参方法中,有两种方法,1.用set方法  2.用含参构造)

set注入

<bean id = " " class=" ">

   <property name = "set方法后面名称,第一个单词要小写"  ref="注入的bean的id">

   </propetry>

</bean>

构造注入

先在Dao层里面写好构造函数

<bean id=" " class=" ">

  <constructor-arg name="参数名"  ref ="注入的bean的id">

  </constructor-arg>

</bean>

Bean的依赖注入的数据类型

除了对象引用可以注入,普通数据类型,集合等都可以在容器中进行注入

注入普通数据类型用value=" "

<property name = " ">

<list>

      <value>   </value>

</list>

</property>

<property name = " ">

<map>

      <entry key =" " value-ref= " ">

      </entry>

<map>

在xml文件中用<context:property-placeholder location="classpath:jdbc.properties">加载外部的properties文件

引入其他的配置文件(分模块开发)

<import resoure = "xxx.xml"></import>

Spring相关API

ApplicationContext的实现类

1.ClassPathXmlApplicationContext

它是从类的根路径下加载配置文件推荐使用这种

2.FileSystemXmlApplicationContext

它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任何位置,参数为全路径地址

3.AnnotationConfigApplicationContext

当使用注解配置容器对象,需要用些类创建Spring容器他用来读取注解

properties文件

结构为key-value结构

读取此配置文件

ResourceBundle rb =ResourceBundle.getBundle("properties文件名");

String str = rb.getString("key值");

注解:

@Component("id")相对于一个<bean>,用于类名上面

@Autowired   //按照数据类型从Spring容器中进行匹配

@Qualifier("注入的Bean的id") //是按照id值从容器中进行匹配的,要和@Autowired一起使用

使用注解需要在xml文件中配置组件扫描

<context:component-scan base-package="包的全路径"/>

set注入需要set方法,用注解就不需要了

@Resource(name="注入的Bean id")  //相当于@Autowired+@Qualifier

基本数据类型

@Value("${key值}")

@Scope("singleton")  //让Spring产生单例的bean

@Scope("prototype")  //多例

@postConstruct  //用在初始化方法上,用来定义bean的初始化方法

@preDestroy  //用在销毁方法上,用来定义bean的销毁方法

Spring的新注解

为了解决:1.非自定义的bean的配置  <bean>

2.加载properties文件的配置<context:property-placeholder>

3.组件扫描的配置<context:component-scan>

4.引入其他文件<import>

@Configuration  //标志该类是Spring的核心配置类

@ComponentScan("包的路径名")     //扫描包

@Bean("起个名字,也可不起")   //Spring会将当前方法的返回值存在Spring容器中

@PropertySource("classphth:xxx.properties")

@Import({xxx.class,xxx.class})

使用了注解,这个时候想加载配置文件,不能用classPathXmlApplicationContext

现应用AnnotationConfigApplicationContext(Configuration的类名带上.class)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值