spring注解实现IOC

Spring注解实现


配置spring.xml文件

<?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:context="http://www.springframework.org/schema/context"
                                             xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- annotation 注解开启 -->
    <context:annotation-config/>
    <!--  告知spring去哪个包,查找注解-->
    <context:component-scan base-package="com.zx.spring"></context:component-scan>

</beans>

model层:

创建一个User模式

public class User {

    private String name;

    public String getName() {
        return name;

    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

dao层:

在spring 中 采用 @Repository 来注解dao层实现类。

IUserDao接口

public interface IUserDao {
    public void addUser(User user);
}

IUserDao的实现:

UserHiberDao

@Repository("userHiberDao")
public class UserHiberDao implements IUserDao{
    @Override
    public void addUser(User user) {
        System.out.println("Hiber正在添加:"+user);
    }
}

UserJdbcDao

@Repository("userJdbcDao")
public class UserJdbcDao implements IUserDao{
    @Override
    public void addUser(User user) {
        System.out.println("Jdbc正在添加:"+user);
    }
}

service层

service层采用 @Service 注解,上下依赖采用 @Resource在setter方法上添加注解。

IUserService 接口

public interface IUserService {
    public void addSucess(User user);
}

接口的实现

@Service("userService")
public class UserService implements IUserService{
    private IUserDao userDao;
    @Override
    public void addSucess(User user) {
        userDao.addUser(user);
    }
    //上下依赖的注解,当需要使用userHiberDao添加数据,将依赖注入设置为@Resource(name = "userHiberDao")
    @Resource(name = "userJdbcDao")
    public void setUserDao(IUserDao userDao) {
        this.userDao = userDao;
    }
}

Controller层

在Controller层采用 @Controller() 注解,上下依赖也采用 @Resource 在setter方法上添加注解

@Controller("userAction")
public class UserAction {
    private IUserService userService;

    public String save(User user){
        userService.addSucess(user);
        return "sucess";
    }

    @Resource(name = "userService")
    public void setUserService(IUserService userService) {
        this.userService = userService;
    }
}

测试

public class SpTest {

    /**
     * /**
     * Spring  IOC(控制反转)
     * 将控制管理权不由JavaBean管理,交给Spring容器管理
     *
     * DI 依赖注入
     * --分层
     *      --上层依赖于下层
     *      --下层服务于上层
     *
     *
     *
     * Created by Administrator on 2018/1/18.
     */


    @Test
    public void test01(){
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");

        UserAction  userAction= beanFactory.getBean("userAction", UserAction.class);

        User user1 = new User();
        user1.setName("大数据");
        User user2 = new User();
        user2.setName("人工智能");

        userAction.save(user1);
        userAction.save(user2);


    }
}


image_1c49bl245165pfoc129c2i039tm.png-33.8kB

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值