SSM依赖注入

  学习SSM框架,该框架对于bean的管理类更为复杂、也更加细化,在学习SSM之前,对于使用的依赖直接new一个出来就可以了,但也得益于所做的项目是小型的,对于大型、复杂的项目使用SSM框架是一种很好的选择。

  1、setter注入和构造器注入

  (1)应用类型-操作service层

    //在bean中定义引用类型属性 并提供set方法
    public class BookServiceImpl implements BookService {
        private BookDao bookDao;
        private UserDao userDao;
    
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    
        @Override
        public void save() {
            System.out.println("book service save ...");
            bookDao.save();
            userDao.save();
        }
    }
    // 在配置中使用property引用类型对象
    <bean id="bookService" class="com.service.impl.BookServiceImpl">
            <property name="bookDao" ref="bookDao"/>
            <property name="userDao" ref="userDao"/>
    </bean>

  (2)简单类型-操作dao层

    //在bookDao中进行配置
    public class BookDaoImpl implements BookDao {
    
        private int connectionNum;//连接数量
        private String connectionName;//连接名称
    
        public void setConnectionNum(int connectionNum) {
            this.connectionNum = connectionNum;
        }
    
        public void setConnectionName(String connectionName) {
            this.connectionName = connectionName;
        }
    
        @Override
        public void save() {
            System.out.println("book dao save ..."+connectionNum+","+connectionName);
        }
    }
    
    //在配置文件中进行bean的配置
    
    <bean id="bookDao" class="com.dao.impl.BookDaoImpl">
            <property name="connectionNum" value="10"/>
            <property name="connectionName" value="mysql"/>
        </bean>

  2、构造器注入

二、构造器注入
与setter注入有很大程度的相似,将setter方法换成构造函数
    • 在bean中定义构造方法
    public class BookServiceImpl implements BookService {
        private BookDao bookDao;
        private UserDao userDao;
    
        public BookServiceImpl(BookDao bookDao, UserDao userDao) {
            this.bookDao = bookDao;
            this.userDao = userDao;
        }
    
        @Override
        public void save() {
            System.out.println("book service save ...");
            bookDao.save();
            userDao.save();
        }
    }
    • 在配置文件中进行配置,注意bean中标签名的变化
    <bean id="bookDao" class="com.dao.impl.BookDaoImpl">
            <constructor-arg name="connectionNum" value="100"/>
            <constructor-arg name="dataName" value="mysql"/>
        </bean>
        <bean id="userDao" class="com.dao.impl.UserDaoImpl"/>
    
        <bean id="bookService" class="com.service.impl.BookServiceImpl">
            <constructor-arg name="bookDao" ref="bookDao"/>
            <constructor-arg name="userDao" ref="userDao"/>
        </bean>
这里面的name指的是构造函数中参数的名称,耦合度较高,可以将name换成type,或者将name换成index。直接使用名称或者使用索引较好

3、依赖自动装配

 

posted on 2022-07-26 21:39  跨越&尘世  阅读(134)  评论(0)    收藏  举报