用iPhone做网站服务器/今日新闻头条最新消息
一.依赖注入
依赖注入DI:它是spring框架核心ioc的具体实现。在编写程序时候,通过控制反转,把对象的创建交给spring容器中。ioc的解耦知识降低他们之间的依赖关系,但不会消除,如业务层调用持久层。
二.依赖的方式
2.1 通过set方法
1.set方法的注入:
首先,需要引入p命名空间: xmlns:p="http://www.springframework.org/schema/p"
其次,需要注入方式:
<bean id="userService" class="com.ljf.spring.demo.ioc.service.impl.UserServiceImpl"><property name="ud" ref="userDaoDemo"></property>
</bean>
2.dao层
package com.ljf.spring.demo.ioc.dao;public interface UserDao {//添加数据public int addUser();
}
package com.ljf.spring.demo.ioc.dao.impl;import com.ljf.spring.demo.ioc.dao.UserDao;/*** @ClassName: UserDaoImpl* @Description: TODO* @Author: liujianfu* @Date: 2021/01/01 19:27:19 * @Version: V1.0**/
public class UserDaoImpl implements UserDao {public UserDaoImpl(){System.out.println("无参构造函数...");}public int addUser() {System.out.println("add user success!!!!");return 0;}
}
3.service
package com.ljf.spring.demo.ioc.service;public interface UserService {//添加数据public int addUser();
}
package com.ljf.spring.demo.ioc.service.impl;import com.ljf.spring.demo.ioc.dao.UserDao;
import com.ljf.spring.demo.ioc.service.UserService;/*** @ClassName: UserServiceImpl* @Description: TODO* @Author: liujianfu* @Date: 2021/01/03 11:19:57 * @Version: V1.0**/
public class UserServiceImpl implements UserService {private UserDao ud;public void setUd(UserDao ud) {this.ud = ud;}public int addUser() {return ud.addUser();}}
引入命名空间:
配置bean标签调用:
4.调用
2.2 通过构造方法
1.dao层:
package com.ljf.spring.demo.ioc.dao;public interface UserDao {//添加数据public int addUser();
}
package com.ljf.spring.demo.ioc.dao.impl;import com.ljf.spring.demo.ioc.dao.UserDao;/*** @ClassName: UserDaoImpl* @Description: TODO* @Author: liujianfu* @Date: 2021/01/01 19:27:19 * @Version: V1.0**/
public class UserDaoImpl implements UserDao {public UserDaoImpl(){System.out.println("无参构造函数...");}public int addUser() {System.out.println("add user success!!!!");return 0;}
}
2.service层
package com.ljf.spring.demo.ioc.service;public interface UserService {//添加数据public int addUser();
}
package com.ljf.spring.demo.ioc.service.impl;import com.ljf.spring.demo.ioc.dao.UserDao;
import com.ljf.spring.demo.ioc.service.UserService;/*** @ClassName: UserServiceImpl* @Description: TODO* @Author: liujianfu* @Date: 2021/01/03 11:19:57 * @Version: V1.0**/
public class UserServiceImpl implements UserService {private UserDao ud;//有参数构造函数public UserServiceImpl(UserDao ud) {this.ud = ud;}//无参构造函数public UserServiceImpl() {}/**public void setUd(UserDao ud) {this.ud = ud;}**/public int addUser() {return ud.addUser();}}
3.配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--把对象的创建交给spring来管理--><!--userDao的创建 ,这个bean的id可以任意起名, 默认使用构造函数实例化对象<bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.dao.impl.UserDaoImpl" scope="singleton"></bean>--><!--userDao的创建 ,这个bean的id可以任意起名, 静态工厂方式实例化化对象<bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.config.StaticFactory" factory-method="getUserDao"></bean>--><!--userDao的创建 ,这个bean的id可以任意起名, 动态工厂实例化对象-<bean id="factoryDemo" class="com.ljf.spring.demo.ioc.config.DynamicFactory" ></bean><bean id="userDaoDemo" factory-bean="factoryDemo" factory-method="getUserDao" ></bean>--><!--userDao的创建 ,这个bean的id可以任userService意起名, 默认使用构造函数实例化对象
<bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.dao.impl.UserDaoImpl" scope="singleton"></bean>使用set方法实例化方法
<bean id="userService" class="com.ljf.spring.demo.ioc.service.impl.UserServiceImpl"><property name="ud" ref="userDaoDemo"></property>
</bean>--><bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.dao.impl.UserDaoImpl" scope="singleton"></bean><bean id="userService" class="com.ljf.spring.demo.ioc.service.impl.UserServiceImpl"><constructor-arg name="ud" ref="userDaoDemo"></constructor-arg></bean>
</beans>
4.调用: