百木园-与人分享,
就是让自己快乐。

spring 配置文件 --bean

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>


来源:https://www.cnblogs.com/itth/p/16296666.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » spring 配置文件 --bean

相关推荐

  • 暂无文章