其他分享
首页 > 其他分享> > 跟着黑马学SSM——Day2之Bean

跟着黑马学SSM——Day2之Bean

作者:互联网

依赖注入方式

setter注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <bean id="bookDaoImpl" class="com.xhj.dao.impl.BookDaoImpl"/>
    <bean id="userDaoImpl" class="com.xhj.dao.impl.UserDaoImpl"/>
    <bean id="bookServiceImpl" class="com.xhj.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDaoImpl"/>
        <property name="userDao" ref="userDaoImpl"/>
        <property name="name" value="xxx"/>
    </bean>
</beans>
private BookDao bookDao;
private UserDao userDao;
private String name;

public void setName(String name) {
    this.name = name;
}

public void setBookDao(BookDao bookDao) {
    this.bookDao = bookDao;
}

public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}

构造器注入

依赖注入方式选择

  1. 强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现
  2. 可选依赖使用setter注入进行,灵活性强
  3. Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
  4. 如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
  5. 实际开发过程中还要根据实际情况分析,如果受控制对象没有提供setter方法就必须使用构造器注入
  6. 自己开发的模块推荐使用setter注入

依赖自动装配

  • 配置中使用bean标签autoware属性设置自动装配的类型

    <bean id="bookDao" class="com.xhj.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.xhj.service.impl.BookServiceImpl" autowire="byType"/>
    

依赖自动装配特征

集合注入

数组

List

Set

Map

Properties

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="bookDao" class="com.xhj.dao.impl.BookDaoImpl">
        <property name="array">
            <array>
                <value>1</value>
                <value>2</value>
                <value>3</value>
                <value>4</value>
            </array>
        </property>
        <property name="list">
            <list>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
                <value>ddd</value>
            </list>
        </property>
        <property name="set">
            <set>
                <value>aaa</value>
                <value>aaa</value>
                <value>aaa</value>
                <value>aaa</value>
            </set>
        </property>
        <property name="map">
            <map>
                <entry key="name" value="xxx"/>
                <entry key="old" value="18"/>
                <entry key="sex" value="boy"/>
            </map>
        </property>
        <property name="properties">
            <props>
                <prop key="name">xxx</prop>
                <prop key="old">18</prop>
                <prop key="sex">boy</prop>
            </props>
        </property>
    </bean>
</beans>

案例:数据源对象管理

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--管理DruidDataSource对象-->
    <bean  class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3305/mybatisDemo"/>
        <property name="username" value="root"/>
        <property name="password" value="00000"/>
    </bean>

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3305/mybatisDemo"/>
        <property name="user" value="root"/>
        <property name="password" value="00000"/>
    </bean>
</beans>

加载properties文件


  • 不加载系统属性

    <context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
    
  • 加载多个properties文件

    <contxt:property-placeholder location="jdbc.properties,jdbc2.properties"/>
    
  • 加载所有properties文件

    <context:property-placeholder location="*.properties"/>
    
  • 加载properties文件标准格式

    <context:property-placeholder location="classpath:*.properties"/>
    
  • 从类路径或jar包中搜索并加载properties文件

    <context:property-placeholder location="classpath*:*.properties"/>
    

容器

容器创建

获取bean

容器类层次结构图

BeanFactory初始化(了解)

核心容器总结

bean相关

依赖注入相关

标签:依赖,userDao,Day2,bean,bookDao,SSM,Bean,注入,加载
来源: https://www.cnblogs.com/ltom/p/16652185.html