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. 如何解决Visual Studio 2017 运行后控制台窗口一闪就消失了

    出现这种情况的原因 安装使用Visual Studio 2017 后,用Ctrl+F5运行程序,结果控制台窗口一闪就没了,也没有出现"press any key to continue-&q ...

  2. Vue中获取元素宽高

    <div ref="init"></div> 写在 页面 方法 部分 这里的 offsetHeight 是返回元素的宽度(包括元素宽度.内边距和边框,不包括 ...

  3. 检查浏览器支持Webp

    什么是Webp? Webp 是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这 ...

  4. 基于Vue实现关键词实时搜索高亮显示关键词

    最近在做移动real-time-search于实时搜索和关键词高亮显示的功能,通过博客的方式总结一下,同时希望能够帮助到别人~~~ 如果不喜欢看文字的朋友我写了一个demo方便已经上传到了github ...

  5. 软件构造实验-Guns

    根据guns开发示例,搭建汽车信息管理系统

  6. Jar 包下载以及 maven jar 包配置

    学习内容: jar包下载是我们必须掌握的一个内容,不管是使用Maven项目还是其他项目,一般都需要引入外部的 jar 包 jar包下载 下载地址(打不开网址的直接百度搜索 maven reposito ...

  7. h5页面跳转小程序

    2020年以前, 只能通过 web-view内嵌h5跳转小程序,现在  可以直接跳了!!!!!!  官方文档:https://developers.weixin.qq.com/doc/offiacco ...

  8. java语言和jdk、jre基础

    Java语言平台 * J2SE(Java 2 Platform Standard Edition)标准版  * 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌 ...

  9. Python的组合数据类型

    """ Python的组合类型: 序列类型:元素之间存在先后关系,可以通过索引来访问 列表: 元组: 字符串: 映射类型:用键值来表示数据 字典: 集合类型:元素是无序的 ...

  10. Django-初见

    目录 安装&启动 HTTP请求URL路由 项目APP 返回 页面内容 给浏览器 路由 路由子表 创建数据库 定义数据库表 创建数据库表 Django Admin 读取数据库数据 过滤条件 对资 ...