这篇文章不介绍spring的相关概念,只记录一下springbean的创建方式和使用方式。

一、bean的创建和调用

1、创建演示需要用到的类:Student、Teacher、Person

package test.spring.school;

public class Student {
private String name;
private Integer age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
} }
2、spring的xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- beans里的属性是spring的xml标签自动提示的设置 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> <bean id="student" class="test.spring.school.Student"/>
</beans>

文件结构:

3、测试代码

package test.spring;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import test.spring.school.Student; public class TestApp {
@Test
public void testXml() {
@SuppressWarnings("resource")
ApplicationContext ctx = new ClassPathXmlApplicationContext("resources/config.xml");
//根据bean的id查找
Student student = (Student)ctx.getBean("student");
System.out.println(student);
}
}

输出结果:

这种配置bean的方法,是通过类的构造器生成的,所有必须要保证该类有构造器。因为java默认存在无参构造器,可以直接实例化。但是,如果手动添加有参数构造器,必须给属性注入参数值,否则会报错

修改Student类,添加有参构造器:

    public Student(String name, Integer age) {
super();
this.name = name;
this.age = age;
}

测试输出:

二、bean的其他属性的相关配置

1、作用域的配置

  可以通过<bean>定义的scope属性,该属性值得含义:

  singleton,在每个spring loc容器中,一个bean对应一个对象实例,默认项。

  prototype,一个bean对应多个实例。

  request,在一次HTTP请求中,一个bean对应一个实例,仅限Web环境。

  session,在一个HTTP Session中 ,一个bean定义对应一个实例,仅限于Web环境。

  global Session,在一个全局的HttpSession中,一个bean定义对应一个实例;仅在基于portlet的Web应用中才有意义,portlet规范定义了全局Session的概念。

2、初始和销毁方法

  在<bean>的init-method属性和destroy-method属性定义。

  在<beans>元素中的default-init-method和default-destroy-method中给所有的bean定义全局初始和销毁方法

3、延迟实例化

  在ApplicationContext启动时,默认会将所有singleton bean提前进行实例化,如果不想让一个singleton在启动时实例化,可以使用<bean>元素的lazy-init属性改变。

  同样可以在<beans>元素中使用default-lazy-init属性,实现全局<bean>延迟实例化。

配置:

<bean id="student" class="test.spring.school.Student"
scope="prototype" init-method="init" destroy-method="destroy" lazy-init="true"/>

测试:

@Test
public void testXml() {
@SuppressWarnings("resource")
ApplicationContext ctx = new ClassPathXmlApplicationContext("resources/config.xml");
//根据bean的id查找
Student student = (Student)ctx.getBean("student"); System.out.println(student);
student.destroy();
}

输出结果:

spring----bean的使用的更多相关文章

  1. Spring8:一些常用的Spring Bean扩展接口

    前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...

  2. Spring Bean详细讲解

    什么是Bean? Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象. Spring 容器会自动完成@bean对象的实例化. 创建应用对象之间的协作关系的行为称为:装配( ...

  3. Spring Bean的生命周期(非常详细)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

  4. spring bean的生命周期

    掌握好spring bean的生命周期,对spring的扩展大有帮助.  spring bean的生命周期(推荐看)  spring bean的生命周期

  5. spring bean的重新加载

    架构体系 在谈spring bean的重新加载前,首先我们来看看spring ioc容器. spring ioc容器主要功能是完成对bean的创建.依赖注入和管理等功能,而这些功能的实现是有下面几个组 ...

  6. Spring Bean

    一.Spring的几大模块:Data access & Integration.Transcation.Instrumentation.Core Spring Container.Testin ...

  7. 【转】Spring bean处理——回调函数

    Spring bean处理——回调函数 Spring中定义了三个可以用来对Spring bean或生成bean的BeanFactory进行处理的接口,InitializingBean.BeanPost ...

  8. 在非spring组件中注入spring bean

    1.在spring中配置如下<context:spring-configured/>     <context:load-time-weaver aspectj-weaving=&q ...

  9. spring bean生命周期管理--转

    Life Cycle Management of a Spring Bean 原文地址:http://javabeat.net/life-cycle-management-of-a-spring-be ...

  10. Spring Bean配置默认为单实例 pring Bean生命周期

    Bean默认的是单例的. 如果不想单例需要如下配置:<bean id="user" class="..." scope="singleton&q ...

随机推荐

  1. android 2018 面试题

    四大组件:activity.service.content provider.broadcast receiver [一]Activity 1.生命周期 onCreate:表示activity正在被创 ...

  2. 解决微信小程序video属性controls失效问题

    <view class="VideoBox"> <video class='myVideo' id="myVideo01" src=" ...

  3. Java实现堆排序和计数排序

    堆排序代码: 思想:每次都取堆顶的元素,将其放在序列最后面,然后将剩余的元素重新调整为最小堆,依次类推,最终得到排序的序列. import java.util.Arrays; /** * 思路:首先要 ...

  4. java web项目get,post请求参数中文乱码解决

    [转载]原文地址:https://www.cnblogs.com/tom-plus/p/6392279.html 在开发过程中,有时候会碰到get,post请求参数中文乱码. 原因: Http请求传输 ...

  5. [Swift]LeetCode238. 除自身以外数组的乘积 | Product of Array Except Self

    Given an array nums of n integers where n > 1,  return an array outputsuch that output[i] is equa ...

  6. [Swift]LeetCode819. 最常见的单词 | Most Common Word

    Given a paragraph and a list of banned words, return the most frequent word that is not in the list ...

  7. python网络-多进程(21)

    一.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...

  8. innerHTML,outerHTML,innerText,outerText

    - innerHTML 设置或获取位于对象起始和结束标签内的 HTML - outerHTML 设置或获取对象及其内容的 HTML 形式 - innerText 设置或获取位于对象起始和结束标签内的文 ...

  9. css实现超出文本省略号的两个方法

    方法一:适用于定宽高; <!DOCTYPE html> <html> <head lang="en"> <meta charset=&qu ...

  10. Spring Security OAuth2 SSO

    通常公司肯定不止一个系统,每个系统都需要进行认证和权限控制,不可能每个每个系统都自己去写,这个时候需要把登录单独提出来 登录和授权是统一的 业务系统该怎么写还怎么写 最近学习了一下Spring Sec ...