菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
9
0

Spring IOC&DI

原创
05/13 14:22
阅读数 59196

代码结构图:

 

代码实现:

User.java

 1 package entity;
 2 
 3 public class User {
 4     private Integer id;
 5     private String name;
 6     private Integer gender;
 7     public Integer getId(){
 8         return id;
 9     }
10     public String getName(){
11         return name;
12     }
13     public void setId(Integer id){
14         this.id =id;
15     }
16     public void setName(String name){
17         this.name = name;
18     }
19     public void setGender(Integer gender){
20         this.gender = gender;
21     }
22     public Integer getGender(){
23         return gender;
24     }
25 }

 

视图层:UserVo.java

 1 package vo;
 2 
 3 import entity.User;
 4 
 5 public class UserVo {
 6     private Integer id;
 7     private String name;
 8     private Integer gender;
 9     private String genderName;
10     public UserVo(User user) {
11         this.id = user.getId();
12         this.name = user.getName();
13         this.gender = user.getGender();
14     }
15     public void setId(Integer id){
16         this.id =id;
17     }
18     public void setName(String name){
19         this.name =name;
20     }
21     public void setGender(Integer gender){
22         this.gender =gender;
23     }
24     public void setGenderName(String genderName){
25         this.genderName =genderName;
26     }
27     public Integer getId(){
28         return id;
29     }
30     public String getName(){
31         return name;
32     }
33     public Integer getGender(){
34         return gender;
35     }
36     public String getGenderName(){
37         return genderName;
38     }
39     //private String genderName;
40 
41     public UserVo(){}
42         public String toString(){
43             return "User{"+
44                     "id="+id+
45                     ",name='"+name +'\''+
46                     ",genderName="+genderName +
47                     ",gender="+gender+'}';
48         }
49     }

 

 

数据访问层:UserDao.java

1 package dao;
2 
3 import entity.User;
4 
5 public interface UserDao {
6     User getEntity(Integer id);
7 }

 

 

数据访问层:UserDaoImpl.java

 1 package dao.impl;
 2 
 3 import dao.UserDao;
 4 import entity.User;
 5 import org.springframework.stereotype.Repository;
 6 
 7 // 改为默认bean id“userDaoImpl”
 8 @Repository
 9 public class UserDaoImpl implements UserDao {
10     public User getEntity(Integer id) {
11         // 此处应该从数据库查询值 方便起见直接返回一个固定对象
12         User user = new User();
13         user.setId(1);
14         user.setName("Anne");
15         user.setGender(0);
16         return user;
17     }
18 }

 

业务层:UserService.java

1 package services;
2 
3 import org.springframework.context.ApplicationContext;
4 import vo.UserVo;
5 
6 public interface UserService {
7     UserVo getVo(Integer id, ApplicationContext context);
8 }

 

 

业务层:UserServiceImpl.java

 1 package services.impl;
 2 
 3 import dao.UserDao;
 4 import entity.User;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.beans.factory.annotation.Qualifier;
 7 import org.springframework.context.ApplicationContext;
 8 import org.springframework.stereotype.Service;
 9 import services.UserService;
10 import vo.UserVo;
11 
12 @Service("userService")
13 public class UserServicelmpl implements UserService {
14     // 改为自动注入并指定需要注入的实例id
15     @Autowired
16     private UserDao userDao;
17     public UserVo getVo(Integer id,ApplicationContext context) {
18         userDao = (UserDao) context.getBean("userDao");
19         // 执行Dao层方法
20         User user = userDao.getEntity(id);
21         // 省略业务逻辑处理。。。
22         UserVo userVo = new UserVo(user);
23         userVo.setGenderName(userVo.getGender() == 0 ? "female" : "male");
24         return userVo;
25     }
26 }

 

 

控制层:UserController.java

 1 package controller;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.stereotype.Controller;
 6 import services.UserService;
 7 import vo.UserVo;
 8 
 9 @Controller
10 public class UserController {
11     // 改为自动注入
12     @Autowired
13     private UserService userService;
14 
15     public UserVo getVo(Integer id, ApplicationContext context) {
16         // 执行Service层方法,因为之后还需要用到context对象,故下传
17         return userService.getVo(id, context);
18     }
19 }

 

测试层:UserTest.java

 1 import controller.UserController;
 2 import org.springframework.context.ApplicationContext;
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 import vo.UserVo;
 5 
 6 public class UserTest {
 7     public static void main(String[] args) {
 8         // 读取配置文件刷新Spring容器
 9         ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
10         // 从Spring容器拿Controller
11         UserController userController = (UserController) context.getBean("userController");
12         // 执行Controller层方法,因为之后还需要用到context对象,故下传
13         UserVo userVo = userController.getVo(1,context);
14         System.out.println(userVo);
15     }
16 }

 

运行结果:

1.

 

 

总结:

注解:

  1. @Component:用于通用组件类
  2. @Service:业务逻辑层
  3. @Controller:流程控制层
  4. @Repository:数据持久层上

 

发表评论

0/200
9 点赞
0 评论
收藏
为你推荐 换一批