接上一篇 IOC配置方法:http://blog.csdn.net/gw85047034/article/details/52768780
本文通過幾個簡單的類,驗證一下@Component,@Service,@Repository,@Controller,@Autowired這幾個註解的使用
1、User.java
使用@Component
package com.annotation;
import org.springframework.stereotype.Component;
@Component
public class User {
public User() {
super();
System.out.println("User's constructor...");
}
}
2、UserRepository
使用接口類和實現類,並且使用value屬性,對bean進行命名;
引用User類,使用Autowired自動裝載
2.1 UserRepository接口類
package com.annotation.respository;
public interface UserRepository {
void save();
}
2.2 UserRepositoryImpl實現類
package com.annotation.respository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.annotation.User;
// 此處用value屬性對bean重命名,否則默認名稱就是userRepositoryImpl
@Repository("UserRepository")
public class UserRepositoryImpl implements UserRepository {
User user;
public User getUser() {
return user;
}
// 此處在setter的參數位置,添加@Autowired自動裝載bean
public void setUser(@Autowired User user) {
this.user = user;
}
@Override
public void save() {
System.out.println("UserRepository save...");
}
}
3、UserService
使用@Service
引用UserRepository類,使用@Autowired自動裝載
package com.annotation.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.annotation.respository.UserRepository;
@Service
public class UserService {
// 此處在屬性上增加@Autowired,實現自動裝載
@Autowired
private UserRepository userRepository;
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
public UserRepository getUserRepository() {
return userRepository;
}
public void add() {
System.out.println("UserService add...");
userRepository.save();
}
}
4、UserController
使用@Controller
引用UserService類,使用@Autowired自動裝載
package com.annotation.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.annotation.service.UserService;
@Controller
public class UserController {
private UserService userService;
public UserService getUserService() {
return userService;
}
// 此處在setter上增加
@Autowired
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
public void execute() {
System.out.println("UserController execute...");
userService.add();
}
}
PS:@Autowired可以在三個地方添加,屬性上面,Setter上面以及setter的參數前面
5、配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan
base-package="com.annotation">
</context:component-scan>
</beans>
6、main函數
public class Main {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
UserController userController = (UserController) context.getBean("userController");
userController.execute();
}
}
執行結果
User's constructor...
UserController execute...
UserService add...
UserRepository save...