无极3娱乐手机版下载-无极3登录-无极3

    
当前位置:首页无极娱乐4登录正文
admin

赋得古原草送别,比照 Spring IoC 两种开发方式:XML 和注解

  5个月前 (07-18)     221     0
简介:基于 XML 配置方式{ return userService.getUserById; } } ; } public class UserServiceImpl implements UserService{ private UserDAO userDAO;...

今日咱们来说说在实践开发中经常会运用到的 IoC 技能:经过 IoC 容器架构程序的分层完结,有两种办法:根据 XML 装备文件和根据注解。

咱们把程序分为 3 层:Controller 层、Service 层和 DAO 层。关系为 Controller 层调用 Service 层,Service 层调用 DAO 层,而且 Service 层和 DAO 层规划为接口,这是一个典型的 MVC 形式后台代码分层结构。

根据 XML 装备办法

(1)创立 User赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解Controller 类:

public class UserController {
private UserService u福察皇后serService;
public User ge宿世tUserById(int id){
return userService.getUserById(id);
}
}

(2)创立 UserService 接口以及完结类 UserServiceImcutpl:

public interface UserService {
public User getUserById(int id);
}
public class UserServiceImpl imple木氏嫡女ments UserService{
private UserDAO userDAO;
@Overrid轿车标志大全e
public User getUserById(int id) {
// TODO Auto-generated method stub
return userDAO.getUserById(id);
}
}

(3)创立 UserDAO 接口以及完结类 UserDAOImpl:

public interface UserDAO {
public User getUserById(int id);
}
public class UserDAOImpl impleme赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解nts UserDAO{
private static Map users;
static{
users = new HashMap();
users.put(1, new User(1, "张三"));
users.put(2, new User(2, "李四"));
users.put(3, new User(3, "王五"));
}
@Override
public User getUserByI龙井说唱被关了几年d(int id) {
// TODO Auto-generated method stub
return users.get(id);
}
}

(4)创立 User 实体类:

public class User {
private int id;
private String name;
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
}

(5)在 spring.xml 中装备 userController、userService、userDAO,并完结依靠注入:











(6)在测验类中获取 userController 目标,调用办法获取 user 目标:

Applicatio四书五经六艺七谋八略nContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
UserController userController = (UserController) applicationContext.getBean("userController");
User user = userController.getUserById(1);
Syste赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解m.out.println(user);


根据注解的办法

将 UserController、UserService、UserDAO 类扫玩邻居家的小女子描到 IoC 容器中,在类中设置注解完结依靠注入。

(1)修正 spring.xml:



base-package="comqq注册账号.southwind" 表明将 com.southwind 下一切子包的类悉数扫描到 IoC 容器中,一步可将一切参加项目的类完结扫描注入。留意:需求引进 context 命名空间。

(2)修正poison UserController,增加注解:

@Controller
public class UserController {
@Autowired
private UserService userService;
public User getUserById(int id雏){
return userService.getUserById(id);
}
}

对比顾倾城沉鱼之前的代码,有两处改动:

1、在类名处增加 @Controller 注解,表明该类作为一个控制器;

2、userService 特点处增加 @Autowired 注解,表明 IoC 容器主动完结装载,默许是 byType 的办法。

(3)修正 UserServiceImpl:

@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDAO userDAO;
@Override
public User getUserById(int id) {
return userDAO.getUserById(id);
}
}

同上,做了两处改动:

1、在类名处增加 @Service 注解,表明该类是事务层;

2、userDAO 特点处增加 @Autowired 注解,表明 IoC 容器主动完结装载,默许是 byType 的办法。

(4)修正 UserDAOImpl:

@Repository
public class UserDAOImpl implements UserDAO{
private static Map users;
static{
users = new HashMap();
users.put(1, new章一诚微博 User(1, "张三"));
users.put(2, new User(2, "李四"));
users.put(3, new User(3, "王五"));
}
@Override
public User getUserById(int id) {
// TODO 赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解Auto-generated method stub
return users.get(id);
}
}

做了一处改动:在类名处增加 @Repository 注解,表明该类是数据接口层。

(5)运转测验代码:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
UserController userController = (UserController) applicationContext.getBean("userController");
User user = userController.getUserById(1);
System.out.println(user);

代码成功运转,经过代码能够看到,运用注解的办法,可简化代码,所以实践开发中,引荐运用根据注解的办法来架构分层。

咱们别离给 UserController、UserService、UserDAO 增加了 @Controller、@Service、@Repository 赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解注解。

IoC 中能够给类增加的注解有 4 种:

@Controller

@Service

@Repository

@Component

这 4 种注解办法没有差异,咱们在赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解开发时能够随意运用恣意一个注解,可是根据代码标准一般挑选运用 @Controller、@Service、@Repository 别离表明 Controller 层、Service 层、DAO 层。

前面咱们提到过,类spacex中特点主动装载,默许是经过 byType 的办法,主动装载除了 byType 的办法,还能够运用 byName 的办法,运用 byName 的办法,需求结合 @Qualifier 注解一同榜首滴血4运用。

@Controller
public class UserController {
@Autowired()
@Qualifier("userService")
private UserService userService;
public User getUserById(int id){
return userService.ge成也萧何败也萧何tUserById(id);
}
}

咱们知道 byName 的办法,是经过特点名去匹配对应 bean 的 id 特点值,可是根据注解的办法咱们并没有给 bean 设置 ID,该怎么完结呢?

其实在类中增加注解时,现已设置了默许的 ID,即类名首字母小写之后的值便是 ID 的默许值。

@Service
public class UserServiceImpl implements 赋得古原草送行,对比 Spring IoC 两种开发办法:XML 和注解UserService

此刻,IoC 容器中默许赋值,UserService bean 的id=userServic结肠炎症状e,与 UserController 中的特点名共同,所以能够完结主动。

现在做出修正手动赋值,设置UserService bean 的 id=myUserService。

@Service("myUserService")
public class UserServiceImpl implements UserService{
@Autowired
private UserDAO userDAO;
@Override
public User getUserById(int id) {
// TODO Auto-generated method stub
return userDAO.getUserById(id);
}
}

很显然,UserController 中的 userService 特点也需求去匹配 name=m赤尸为什么害丹辰子yUserService 的bean,所以设置 @Qualifier("myUserServilamunationce")。

@Controller
public class UserController {
@Autowired()
@Qualifier("myUserService")
private UserService userService;
public User getUserById(int id){
return userService.getUserById(id);
}
}

@Qualifier() 中的值有必要与 @Service() 中的值共同,才干完结主动装载。

重视微信大众号「Java大联盟」,重视即可获取海量学习干货,一起还有不定期送书,键盘,鼠标等粉丝福利。

赶快来重视一波,海量资源拿到手软。

声明感谢您对我们网站的认可,非常欢迎各位朋友分享本站内容到个人网站或者朋友圈,
转转请注明出处:http://www.ip-192.com/articles/427.html
点赞 打赏

打赏方式:

支付宝扫一扫

微信扫一扫

扫一扫
QQ客服:111111111
工作日: 周一至周五
工作时间: 9:00-18:00