博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回忆Spring IOC 几个注解&简单示例
阅读量:6863 次
发布时间:2019-06-26

本文共 3277 字,大约阅读时间需要 10 分钟。

hot3.png

@AutoWired                 @Component

1、新建maven项目,pom文件写入所需依赖(所需依赖以及版本在此查询复制即可  )

junit
junit
3.8.1
test
org.springframework
spring
2.5.6
commons-logging
commons-logging
1.1.2

2、目录结构

9f366122a63f1f2a4c729d5d40f668e4ee1.jpg

3、User.java 

package com.kobe.model;public class User {		private String username;	private String password;		public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}}

4、UserDAO.java  (接口 interface)

package com.kobe.dao;import com.kobe.model.User;public interface UserDAO {	public void save(User user);}

5、UserDAOImpl.java      (实现类)

package com.kobe.dao.impl;import org.springframework.stereotype.Component;import com.kobe.dao.UserDAO;import com.kobe.model.User;@Component("userDAO")public class UserDAOImpl implements UserDAO{	public void save(User user) {		//写入数据库相关的操作 		System.out.println("user saved!");	}}

@Component("userDAO")    告诉Spring 这里有一个名字叫做userDAO的组件

 

6、UserService.java

package com.kobe.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.kobe.dao.UserDAO;import com.kobe.model.User;@Component("userService")public class UserService {		private UserDAO userDAO;		public void init() {		System.out.println("init");	}	public void add(User user) {		userDAO.save(user);	}	public UserDAO getUserDAO() {		return userDAO;	}	@Resource(name="userDAO")	public void setUserDAO(UserDAO userDAO) {		this.userDAO = userDAO;	}		public void destory() {		System.out.println("destroy");	}	}

@Resource(name="userDAO")   告诉Spring 这里的DAO注入 名字叫做 userDAO的bean

 

7、beans.xml

<context:component-scan base-package="com.kobe" />     扫描com.kobe 目录下的所有文件

8、UserServiceTest.java

package com.kobe.service;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.kobe.model.User;public class UserServiceTest {	@Test	public void testAdd() throws Exception {		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");				UserService service = (UserService) ctx.getBean("userService");		UserService service2 = (UserService) ctx.getBean("userService");				service.add(new User());				System.out.println(service == service2);				ctx.destroy();	}}

9、Run As - Junit Test

输出结果如下

user saved!

true

 

10、如果不使用@Component 的话,在beans.xml 中自己写bean的id和class

UserService.java 和 UserDAOImpl.java 的@Component去掉

UserService.java 中的 setUserDAO方法上的 @Resource 可以指定name,也可以让spring自动通过byName或者byType去找

 默认按名称byName,名称找不到,按类型byType

@Resource	public void setUserDAO(UserDAO userDAO) {		this.userDAO = userDAO;	}

运行测试类,输出一样

11、使用@AutoWired

默认按类型by type    如果想用byName,使用@Qualifier

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;	@Autowired	public void setUserDAO(@Qualifier("userDAO") UserDAO userDAO) {		this.userDAO = userDAO;	}

输出结果一样。

 

 

转载于:https://my.oschina.net/xiaozhiwen/blog/1835544

你可能感兴趣的文章
我的友情链接
查看>>
AIX查看端口被占用
查看>>
GUN sed高级用法,sed脚本编写
查看>>
我的友情链接
查看>>
HTML 5 Web Workers
查看>>
基于koajs的web项目构建-心得篇
查看>>
通过minify将项目中js和css文件的打包
查看>>
提取Windows用户密钥文件cachedump
查看>>
自定义grains_module pillar
查看>>
log file sycn 概述
查看>>
Javascript对于不同浏览器的兼容性
查看>>
开源在线阅读技术资源
查看>>
慎用jQuery中的submit()方法
查看>>
淘宝样式初始化代码
查看>>
Gson解析json数据 亲自测试可用
查看>>
我与监控宝之间的点点滴滴
查看>>
delphi 数据库显示的TDBGrid配置
查看>>
对51CTO的看法
查看>>
userenv和sys_context函数
查看>>
是否会回到起点.回忆只能是回忆
查看>>