IoC的实现方式有两种:XML配置文件、基于注解。

MVC开发模式:

  Controller层

  Service层

  Repository层

  

  Controller层调用Service,Service调用Repository

基于XML配置文件方式

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

    <bean id="userController" class="com.sunjian.controller.UserController">
        <property name="userService" ref="userService"></property>
    </bean>

    <bean id="userService" class="com.sunjian.service.impl.UserServiceImpl">
        <property name="userRepository" ref="userRepository"></property>
    </bean>

    <bean id="userRepository" class="com.sunjian.repository.impl.UserRepositoryImpl"></bean>
</beans>

entity

package com.sunjian.entity;

public class User2 {
    private Integer id;
    private String name;

    public User2(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public User2(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

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

repository

package com.sunjian.repository;

import com.sunjian.entity.User2;

/**
 * @author sunjian
 * @date 2020/3/14 15:44
 */
public interface UserRepository {
    public User2 findUserById(Integer id);
}

repositoryImpl

package com.sunjian.repository.impl;

import com.sunjian.entity.User2;
import com.sunjian.repository.UserRepository;

import java.util.HashMap;
import java.util.Map;

/**
 * @author sunjian
 * @date 2020/3/14 15:45
 */
public class UserRepositoryImpl implements UserRepository {
    private static Map<Integer, User2> userMap;

    static {
        userMap = new HashMap<Integer, User2>();
        userMap.put(1, new User2(1, "张三"));
        userMap.put(2, new User2(2, "李四"));
    }

    public User2 findUserById(Integer id) {
        return userMap.get(id);
    }
}

service

package com.sunjian.service;

import com.sunjian.entity.User2;

/**
 * @author sunjian
 * @date 2020/3/14 15:36
 */
public interface UserService {
    User2 findUserBuId(Integer id);
}

serviceImpl

package com.sunjian.service.impl;

import com.sunjian.entity.User2;
import com.sunjian.repository.UserRepository;
import com.sunjian.repository.impl.UserRepositoryImpl;
import com.sunjian.service.UserService;

/**
 * @author sunjian
 * @date 2020/3/14 15:38
 */
public class UserServiceImpl implements UserService {
    private UserRepository userRepository;

    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User2 findUserBuId(Integer id) {
        return userRepository.findUserById(id);
    }

    public void setUserRepository(UserRepositoryImpl userRepository) {
    }
}

controller

package com.sunjian.controller;

import com.sunjian.entity.User2;
import com.sunjian.service.UserService;
import com.sunjian.service.impl.UserServiceImpl;

/**
 * @author sunjian
 * @date 2020/3/14 15:56
 */
public class UserController {

    private UserService userService;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public User2 findUserById(Integer id){
        return userService.findUserBuId(id);
    }
}

test class

package com.sunjian.test;

import com.sunjian.controller.UserController;
import com.sunjian.entity.User2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author sunjian
 * @date 2020/3/14 16:03
 */
public class Test4 {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring2.xml");
        UserController userController = (UserController) applicationContext.getBean("userController");
        User2 user = userController.findUserById(2);
        System.out.println(user);
    }
}
User2{id=2, name='李四'}

基于注解方式

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 https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 将类扫描到IoC容器中 -->
    <context:component-scan base-package="com.sunjian"></context:component-scan>

</beans>

entity

package com.sunjian.entity;

public class User2 {
    private Integer id;
    private String name;

    public User2(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public User2(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

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

repository

package com.sunjian.repository;

import com.sunjian.entity.User2;

/**
 * @author sunjian
 * @date 2020/3/14 15:44
 */
public interface UserRepository {
    public User2 findUserById(Integer id);
}

repositoryImpl

package com.sunjian.repository.impl;

import com.sunjian.entity.User2;
import com.sunjian.repository.UserRepository;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.Map;

/**
 * @author sunjian
 * @date 2020/3/14 15:45
 */
@Repository
public class UserRepositoryImpl implements UserRepository {

    private static Map<Integer, User2> userMap;

    static {
        userMap = new HashMap<Integer, User2>();
        userMap.put(1, new User2(1, "张三"));
        userMap.put(2, new User2(2, "李四"));
    }

    public User2 findUserById(Integer id) {
        return userMap.get(id);
    }
}

service

package com.sunjian.service;

import com.sunjian.entity.User2;

/**
 * @author sunjian
 * @date 2020/3/14 15:36
 */
public interface UserService {
    User2 findUserBuId(Integer id);
}

serviceImpl

package com.sunjian.service.impl;

import com.sunjian.entity.User2;
import com.sunjian.repository.UserRepository;
import com.sunjian.repository.impl.UserRepositoryImpl;
import com.sunjian.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author sunjian
 * @date 2020/3/14 15:38
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;

    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User2 findUserBuId(Integer id) {
        return userRepository.findUserById(id);
    }

    public void setUserRepository(UserRepositoryImpl userRepository) {
    }
}

controller

package com.sunjian.controller;

import com.sunjian.entity.User2;
import com.sunjian.service.UserService;
import com.sunjian.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

/**
 * @author sunjian
 * @date 2020/3/14 15:56
 */
@Controller
public class UserController {
    @Autowired
    private UserService userService;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public User2 findUserById(Integer id){
        return userService.findUserBuId(id);
    }
}

test class

package com.sunjian.test;

import com.sunjian.controller.UserController;
import com.sunjian.entity.User2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author sunjian
 * @date 2020/3/14 16:24
 */
public class Test5 {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring3.xml");
        UserController userController = (UserController)applicationContext.getBean("userController");
        User2 user = userController.findUserById(1);
        System.out.println(user);
    }
}
User2{id=1, name='张三'}

OK.

Spring框架——基于XML/注解开发的更多相关文章

  1. Spring 框架的概述以及Spring中基于XML的IOC配置

    Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...

  2. Spring中基于xml的AOP

    1.Aop 全程是Aspect Oriented Programming 即面向切面编程,通过预编译方式和运行期动态代理实现程序功能的同一维护的一种技术.Aop是oop的延续,是软件开发中的 一个热点 ...

  3. 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

    Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ cl ...

  4. 基于XML的开发

    基于XML的开发 1.定义一个切面类 /** * Created by zejian on 2017/2/20.*/ public class MyAspectXML { public void be ...

  5. spring的基于xml的AOP配置案例和切入点表达式的一些写法

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  6. spring 框架的xml文件如何读取properties文件数据

    spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...

  7. 10 Spring框架--基于注解和xml的配置的应用案例

    1.项目结构 2.基于xml配置的项目 <1>账户的业务层接口及其实现类 IAccountService.java package lucky.service; import lucky. ...

  8. 10 Spring框架--基于注解的IOC配置

    1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...

  9. Spring框架之使用JdbcTemplate开发Dao层程序

    简介: JdbcTemplate开发dao层程序     由Spring框架给我们提供,Spring提供的很多操作数据源(关系型数据库,二维表格模型,有明确的行和列(mysql/orcal等) 非关系 ...

随机推荐

  1. <JZOJ5904>刺客信条

    然鹅考场上打错某变量名导致30都没有 调了很久因为 没转换double 死亡 #include<cstdio> #include<algorithm> #include< ...

  2. ajax async异步

    async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行s ...

  3. Mysql简单总结

    基于Mac OS X系统 MySQL的安装和配置 首先进入 MySQL 官网,选择免费的Community版:MySQL Community Server.MySQL 官网提供了tar.gz和dmg两 ...

  4. 基于SR-IOV的IO虚拟化技术

    服务器配置要求 x86服务器内存不能低于32GB 服务器CPU需要支持虚拟化和设备虚拟化 VT-x VT-d,SR-IOV 功能,并且在BIOS中能启用了SR-IOV 网卡配置最起码为千兆配置 支持 ...

  5. OpenCV使用:加载图片时报错 0x00007FFC1084A839 处(位于 test1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x00000026ABAFF1A8 处。

    加载图片代码为: #include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...

  6. Cenots 7 通过Yum 安装Node.js 报错问题

    环境:CentOS Linux release 7.3.1611 (Core) 安装报错信息: [cenots7@localhost ~]$ sudo yum -y install npm Loade ...

  7. spring jpa ManyToMany 理解和使用

    1.java和jpa 中所有的关系都是单向的.这个关系数据库不同,关系数据库,通过外键定义并查询,使得反向查询总是存在的. 2.JPA还定义了一个OneToMany关系,它与ManyToMany关系类 ...

  8. 史上最全Beyond Compare中文文档.CHM (根据官网整理编辑)

    截图如下:  下载地址: 链接:https://pan.baidu.com/s/1Ml98_biT1leXxGLr9fqI_w 提取码:p8jg

  9. http请求缓存头详解

    缓存的作用:1.减少延迟(页面打开的速度).2.降低服务器负载(先取缓存,无缓存在请求服务器,有效降低服务器的负担).3.保证稳定性(有个笑话是手机抢购时为了保证服务器的稳定性,在前端写个随机数限制百 ...

  10. JS动画之缓动函数分析及动画库

    上一篇讲了JS动画定时器相关知识,这一篇介绍下缓动函数及流行的动画库. 熟悉的图 实际使用 jquery animate()+jquery.easing插件的使用: $(selector).anima ...