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. Spring Framework远程代码执行漏洞复现(CVE-2022-22965)

    1.漏洞描述 漏洞名称 Spring Framework远程代码执行漏洞 公开时间 2022-03-29 更新时间 2022-03-31 CVE编号 CVE-2022-22965 其他编号 QVD-2 ...

  2. Web缓存总结

    web缓存作用 减少网络带宽消耗降低服务器压力减少网络延迟,加快页面打开速度 Web缓存的类型 数据库数据缓存:为了提供查询的性能,会将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返 ...

  3. 《深入理解ES6》笔记——扩展对象的功能性(4)

    变量功能被加强了.函数功能被加强了,那么作为JavaScript中最普遍的对象,不加强对得起观众吗? 对象类别 在ES6中,对象分为下面几种叫法.(不需要知道概念) 1.普通对象 2.特异对象 3.标 ...

  4. leetcode921. 使括号有效的最少添加

    题目描述: 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...

  5. java中public和缺省这两个访问权限的根本区别?

    为了区分开public和缺省的区别,我们要引进包(package)的概念.包就像咱们磁盘上的目录一样,马克-to-win.package a;就是定义说当前的目录为a.底下编的任何的类,都会出现在当前 ...

  6. vue在移动端的自适应布局

    一. 安装插件(lib-flexible 和 postcss-loader.postcss-px2rem) npm i lib-flexible --save npm install postcss- ...

  7. 集合框架基础三——Map

    Map接口  * 将键映射到值的对象  * 一个映射不能包含重复的键  * 每个键最多只能映射到一个值 Map接口和Collection接口的不同 * Map是双列的,Collection是单列的 * ...

  8. 深入理解nodejs的异步IO与事件模块机制

    node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...

  9. css 第二排文字居中

    text-align: center; 超过长度 自动换行居中

  10. AOT和单文件发布对程序性能的影响

    前言 这里先和大家介绍一下.NET一些发布的历史,以前的.NET框架原生并不支持最终编译结果的单文件发布(需要依赖第三方工具),我这里新建了一个简单的ASP.NET Core项目,发布以后的目录就会像 ...