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>

点赞