bean标配的基本配置
        id:Bean实例在Spring容器中的唯一标识
        class Bean的全限定名
        scope
            1.当scope的取值为singleton时
                Bean的实例化个数: 1个
                Bean的实例化时机:当Spri ng核心文件被加载时,实例化配置的Bean实例
                Bean的生命周期:
                对象创建:当应用加载,创建容器时,对象就被创建了
                对象运行:只要容器在,对象一直活着
                对象销毁:当应用卸载,销毁容器时,对象就被销毁了
            2.当scope的取值 为prototype时
                Bean的实例化个数:多个
                Bean的实例化时机:当调用getBean()方法时实例化Bean
                Bean的生命周期:
                对象创建:当使用对象时,创建新的对象实例
                对象运行:只要对象在使用中,就一直活着
                对象销毁:当对象长时间不用时,被Java 的垃圾回收器回收了
        * init-method:指定类中的初始化方法名称
        * destroy-method:指定类中销毁方法名称
        <bean id="userDao" class="com.ithema.dao.impl.UserDaoimpl" init-method="init" destroy-method="destory"></bean>
        
        实例化bean对象
            1,提供无参构造方法(默认)
            2,静态工厂实例化bean
                1、创建工厂类
                    public class BeanDaoFactory {
                        public static BeanDao getBeanDao(){
                            System.out.println("bean dao factory running ...");
                            return new BeanDaoImpl();
                        }
                    }
                2、配置bean
                <bean id="beanDao" class="com.ithema.dao.impl.BeanDaoFactory" factory-method="getBeanDao" />
            3、实例工厂实例化bean
                1、定义实例工厂
                    public class BeanDaoFactory {
                        public BeanDao getBeanDao(){
                            System.out.println("bean dao factory running ...");
                            return new BeanDaoImpl();
                        }
                    }
                2、配置bean
                    <!-- 1.配置实例工厂对象 -->
                    <bean id="beanFactory" class="factory.BeanDaoFactory" />
                    <!-- 2.配置beanDao对象 -->
                    <bean id="beanDao" factory-bean="beanFactory" factory-method="getBeanDao" />

                测试代码
                public class App {
                    public static void main(String[] args) {
                        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
                        BeanDao beanDao = (BeanDao) context.getBean("beanDao");
                        beanDao.save();
                    }
                }

        bean依赖注入的三种方式
            set方法
                1.set方法
                    public class UserServiceImp implements UserService {
                        private UserDao userDao;
                        
                        public void setUserDao(UserDao userDao){
                            this.userDao = userDao;
                        }

                        @Override
                        public void save() {
                            userDao.save();
                        }
                    }
                2.配置Spring容器调用set方法进行注入
                        <bean id="userDao" class="com.weihong.dao.impl.UserDaoImpl" scope="prototype"></bean>
                        <bean id="userService" class="com.weihong.service.serviceImp.UserServiceImp" >
                            <!--        
                                        name:表示UserServiceImpl里UserDao对象的参数
                                        ref:表示引用的是bean对象id为UserDao的对象(引用对象的注入)
                            -->
                            <property name="userDao" ref="userDao"></property>
                        </bean>
                    P命名空间注入
                    P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:
                        1.定义约束头,引入p命名空间:
                            xmlns:p="http://www.springframework.org/schema/p"
                        2.修改注入方式:
                        <bean id="userDao" class="com.weihong.dao.impl.UserDaoImpl" scope="prototype"></bean>
                            <bean id="userService" class="com.weihong.service.serviceImp.UserServiceImp" p:userDao-ref="userDao">
                             </bean>
                        </bean>
                        2.1 构造方法

                            1.在UserServiceImpl中创建有参构造

                                public class UserServiceImp implements UserService {
                                    private UserDao userDao;

                                    public UserServiceImp(UserDao userDao){
                                        this.userDao = userDao;
                                    }

                                    @Override
                                    public void save() {
                                        userDao.save();
                                    }
                                }

                            2. 配置Spring容器调用有参构造时进行注入

                                <bean id="userDao" class="com.weihong.dao.impl.UserDaoImpl" scope="prototype"></bean>
                                <bean id="userService" class="com.weihong.service.serviceImp.UserServiceImp" >
                                    <constructor-arg name="userDao" ref="userDao" ></constructor-arg>
                                    <!--        name:表示UserServiceImpl里UserDao对象的参数
                                                ref:表示引用的是bean对象id为UserDao的对象
                                -->
                                </bean>

                    3.1注入普通数据类型
                            1.普通数据类型
                            public class UserDaoImpl implements UserDao {
                                private String username;
                                private Integer age;

                                public String getUsername() {
                                    return username;
                                }

                                public void setUsername(String username) {
                                    this.username = username;
                                }

                                public Integer getAge() {
                                    return age;
                                }

                                public void setAge(Integer age) {
                                    this.age = age;
                                }

                                public void save(){
                                    System.out.println("age="+age+" username=" +username);
                                }
                            }
                            2.配置文件
                                 <bean id="userDao2" class="com.weihong.dao.impl.UserDaoImpl" >
                            <!--        name:表示对象属性
                                        value:表示为对象属性赋值
                                        ref:表示引用数据对象的注入
                            -->
                                    <property name="username" value="张三"></property>
                                    <property name="age" value="17" ></property>
                                </bean>

                    3.2注入集合数据类型
                            使用set注入
                                在UserDaoimpl添加集合  
                                 private List<String> strList;
                                private Map<String, User> userMap;
                                private Properties properties;

                                public void setStrList(List<String> strList) {
                                    this.strList = strList;
                                }

                                public void setUserMap(Map<String, User> userMap) {
                                    this.userMap = userMap;
                                }

                                public void setProperties(Properties properties) {
                                    this.properties = properties;
                                }

                        2.配置文件
                                <bean id="user1" class="com.ithema.domain.User" >
                                    <property name="name" value="tom"></property>
                                    <property name="addr" value="bai"></property>
                                </bean>
                                <bean id="user2" class="com.ithema.domain.User" >
                                    <property name="name" value="lucy"></property>
                                    <property name="addr" value="cq"></property>
                                </bean>

                                <bean id="userDao" class="com.ithema.dao.impl.UserDaoimpl" >
                                    <property name="strList">
                                            <list>
                                                    <value>aaa</value>
                                                    <value>bbb</value>
                                                    <value>ccc</value>
                                            </list>

                                    </property>
                                    <property name="properties">
                                            <props>
                                                    <prop key="k1">v1</prop>
                                                    <prop key="k2">v2</prop>
                                                    <prop key="k3">v3</prop>
                                            </props>
                                    </property>
                                    <property name="userMap">
                                            <map>
                                                    <entry key="u1" value-ref="user1"></entry>
                                                    <entry key="u2" value-ref="user2"></entry>
                                            </map>
                                    </property>
                        
                                </bean>
    
                        
                    4.引入其他的配置文件    
                     <import resource="applicationContext-user .xml"></import>

spring 配置文件 --bean的更多相关文章

  1. Spring配置文件-Bean生命周期配置(init-method方法,destory-method方法)

    1.UserDaoImpl类 public class UserDaoImpl implements UserDao { public UserDaoImpl(){ System.out.printl ...

  2. Spring配置文件-Bean实例化的三种方式

    1.无参构造方法实例化(详见我的博客) 2.工厂静态方法实例化 创建StaticFactory类 public class StaticFactory { public static UserDao ...

  3. 读取spring配置文件的方法(spring读取资源文件)

    1.spring配置文件 <bean id="configproperties" class="org.springframework.beans.factory. ...

  4. 通过Spring配置文件中bean中的property赋值

    基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...

  5. Spring配置文件中使用ref local与ref bean的区别

    Spring配置文件中使用ref local与ref bean的区别.在ApplicationResources.properties文件中,使用<ref bean>与<ref lo ...

  6. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  7. IOC——Spring的bean的管理(xml配置文件)

    Bean实例化(三种方式) 1.使用类的无参构造进行创建(大多数情况下) <bean id="user" class="com.bjxb.ioc.User" ...

  8. Spring配置文件中<bean>标签的scope属性

    转自:https://fj-sh-chz.iteye.com/blog/1775149 singleton  (默认属性) Spring将Bean放入Spring IOC容器的缓存池中,并将Bean引 ...

  9. spring的bean管理(注解和配置文件混合使用)

    1.建三个类,在一个类中引用其他两个类 import javax.annotation.Resource; import org.springframework.beans.factory.annot ...

随机推荐

  1. 从零开始画自己的DAG作业依赖图(四)--节点连线优化版

    概述 上个版本简单的连线在一些复杂场景,尤其层级比较多,连线跨层级比较多的情况下,会出现线条会穿过矩形的情况,这一讲就是在这个基础上,去优化这个连线. 场景分析 在下面几种情况下,简单版本的画法已经没 ...

  2. 居中的css:完全指南(翻译)

    这里主要参考的是CHRIS COYIER写的一篇的文章(点击查看),主要讲了关于css水平.垂直居中的一些方法,每个方法后面都有一个demo,可以在线查看效果. 1 水平 水平居中有行内元素和块元素, ...

  3. vue重构--H5--canvas实现粒子时钟

    上一篇文章讲解了如何用js+canvas实现粒子时钟,本篇文章 ,主要是使用vue重构,让它在vue也能使用. 我们使用简单的方式重构,不使用vue工程,先加入vue cdn的地址,如下: <s ...

  4. python-逆序输出

    输入一行字符串,然后对其进行如下处理. 输入格式: 字符串中的元素以空格或者多个空格分隔. 输出格式: 逆序输出字符串中的所有元素.然后输出原列表.然后逆序输出原列表每个元素,中间以1个空格分隔.注意 ...

  5. Android普通工具类获取Context

    在普通工具类中定义一个构造方法,类成员context,用于接收传过来的context 在activity中定义: 将context传过去. 在工具类中也可以使用SharePreferences,get ...

  6. SpringBoot快速入门(解析+入门案例源码实现)

    这里写目录标题 SpringBoot入门 一.SpringBoot 概念 二.JavaConfig 入门 1. JavaConfig 概念 2. 项目准备 三.常用注解 四.SpringBoot 入门 ...

  7. 微信小程序常用表单校验方法(手机号校验、身份证号(严格和非严格校验、验证码六位数字校验))

    util.js function isPhone(value) { if (!/^1(3|4|5|7|8)\d{9}$/.test(value)) { return false } else { re ...

  8. 文档声明(Doctype)和<!Doctype html>有何作用? 严格模式与混杂模式如何区分?它们有何意义?

    文档声明的作用: 文档声明是为了告诉浏览器,当前HTML文档使用什么版本的HTML来写的,这样浏览器才能按照声明的版本来正确的解析. <!doctype html> 的作用就是让浏览器进入 ...

  9. Arrays工具类与Collections工具类

    Arrays工具类 : Arrays.sort():对指定数组进行排序,从小到大 Arrays.toString():返回数组的内容的字符串表示形式 Arrays.asList():数组转List,但 ...

  10. JavaSSM-总结

    Spring框架技术 SSM(Spring+SpringMVC+Mybatis)阶段的学习,也算是成功出了Java新手村. 前面我们已经学习过Mybatis了. 从这里开始,很多的概念理解起来就稍微有 ...