关键代码:@Autowired或@Autowired(required=false) // 自动查找bean
@Qualifier("userRepository") // 指定使用userRepository Bean
配置:
base-package="com.shuoeasy.test"
>
详细:
UserController.java:package com.shuoeasy.test.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.shuoeasy.test.service.UserService;
// 表现层
@Controller
public class UserController {
@Autowired
private UserService userService;
public void execute(){
userService.add();
System.out.println("UserController execute");
}
}
UserService.java:package com.shuoeasy.test.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.shuoeasy.test.repository.UserRepository;
// 业务层
@Service
public class UserService {
private UserRepository userRepository;
@Autowired
@Qualifier("userRepository") // 指定使用userRepository Bean
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
// 注解下载参数里面
public void setUserRepository2(@Qualifier("userRepository") UserRepository userRepository) {
this.userRepository = userRepository;
}
public void add(){
userRepository.save();
System.out.println("UserService add");
}
}
UserRepository.java:package com.shuoeasy.test.repository;
public interface UserRepository {
void save();
}
UserRepositoryImpl.java:package com.shuoeasy.test.repository.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.shuoeasy.test.component.User;
import com.shuoeasy.test.repository.UserRepository;
// 持久化层(可以重写名称)
@Repository("userRepository")
public class UserRepositoryImpl implements UserRepository{
@Autowired(required=false)
private User user;
public void save() {
System.out.println(user);
System.out.println("UserRepositoryImpl save");
}
}
bean.xml:<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
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 http://www.springframework.org/schema/context/spring-context-4.2.xsd">
base-package="com.shuoeasy.test"
>
Main.xml:package com.shuoeasy.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.shuoeasy.test.component.User;
import com.shuoeasy.test.controller.UserController;
import com.shuoeasy.test.repository.UserRepository;
import com.shuoeasy.test.service.UserService;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
// bean
User user = (User) ctx.getBean("user");
System.out.println("user->" + user);
// 表现层
UserController userContoller = (UserController)ctx.getBean("userController");
userContoller.execute();
// 业务层
UserService userService = (UserService) ctx.getBean("userService");
userService.add();
// 持久层
UserRepository userRepository = (UserRepository)ctx.getBean("userRepository");
userRepository.save();
}
}
输出:
user->User [id=0, name=null]
User [id=0, name=null]
UserRepositoryImpl save
UserService add
UserController execute
User [id=0, name=null]
UserRepositoryImpl save
UserService add
User [id=0, name=null]
UserRepositoryImpl save