博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring--(14)利用注解建立bean与bean之间的关系
阅读量:6304 次
发布时间:2019-06-22

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

hot3.png

xml配置文件

main文件

public static void main(String[] args) throws SQLException {				ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");				UserController userController = (UserController) ctx.getBean("userController");		userController.excute();					}

controller文件

@Controllerpublic class UserController {		@Autowired	private UserService userService;		public void excute() {		System.out.println("UserController excute...");		userService.add();	}}

service文件

@Servicepublic class UserService {		@Autowired	private UserRepository userRepository;		public void add() {		System.out.println("UserService add...");		userRepository.save();	}}

接口文件

public interface UserRepository {		public void save();}

接口实现层文件

@Repositorypublic class UserRepositoryImpl implements UserRepository {	@Override	public void save() {		System.out.println("UserRepository Save...");	}}

利用@Autowired注解实现bean与bean之间的联系,上述main方法输出

UserController excute...UserService add...UserRepository Save...

二、IOC没有装配的bean

testObject文件

//@Componentpublic class TestObject {		public void name() {		System.out.println("TestObject ...");	}}

这个bean没有加上@Component注解,因此ioc容器不会加载它,但是又需要用到它,则需进行如下处理

@Repositorypublic class UserRepositoryImpl implements UserRepository {	//设置required=false	@Autowired(required=false)	private TestObject testObject;		@Override	public void save() {		System.out.println("UserRepository Save...");		System.out.println(testObject);	}}

三、指定唯一bean

现在UserRepository接口有两个实现类,上面有一个,现在添加一个

@Repositorypublic class UserJdbcRepositoryImpl implements UserRepository{	@Override	public void save() {		System.out.println("UserJdbcRepositoryImpl save...");	}}

如下代码就不知道该调用哪个实现类的save方法

@Servicepublic class UserService {		@Autowired	private UserRepository userRepository;		public void add() {		System.out.println("UserService add...");		//这里不知道调用哪个实现类的save方法		userRepository.save();	}}

为了指定调用哪个save方法,则需要指定实现接口的哪个类,修改如下

@Servicepublic class UserService {		@Autowired	@Qualifier("userJdbcRepositoryImpl")	private UserRepository userRepository;		public void add() {		System.out.println("UserService add...");		//这里指定了实现类UserJdbcRepositoryImpl		userRepository.save();	}}

转载于:https://my.oschina.net/u/2312022/blog/739928

你可能感兴趣的文章
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>