Spring IOC 註解方式

接上一篇 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...




發佈了46 篇原創文章 · 獲贊 10 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章