Spring 注解 @Controller、@Service、@Repository、@Component

1、@Controller、@Service、@Repository、@Component 注解的类会纳入 Spring 容器中进行管理,在需要使用的时候,只需要注入即可。

2、@Controller 用于标注控制层组件;@Service 用于标注业务层组件;@Repository 用于标注数据持久化层组件;@Component 泛指组件,用于标注不好归类的组件。

3、默认情况 bean 的名称为类名(首字母小写),可以通过 value 属性自定义 bean 的名称。默认情况下 bean 是单例的,可以使用 @Scope 注解指定。

4、代码举例如下:

4.1、持久化层:

import org.springframework.stereotype.Repository;

//默认 bean 的名称为类名首字母小写 BookServiceImpl
@Repository
public class BookRepository {
    public void deleteById(long id) {
        System.out.println("根据主键删除 id=" + id);
    }
}

4.2、业务层:

public interface BookService {
    void deleteById(long id);
}

import com.wmx.web_app.repository.BookRepository;
import com.wmx.web_app.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//使用 value 指定 bean 的名称,默认为类名首字母小写 BookServiceImpl
@Service(value = "bookServiceImpl")
public class BookServiceImpl implements BookService {

    @Autowired  //根据类型注入
    private BookRepository bookRepository;

    @Override
    public void deleteById(long id) {
        bookRepository.deleteById(id);
    }
}

4.3、控制层:

import com.wmx.web_app.service.BookService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

//@RestController 等同于在整个类上加了 @ResponseBody,表示类中所有的方法返回值都直接返回给页面
//对于前后端分离的项目,@RestController 更加方便
@Controller
public class BookController {

    //根据名称注入
    @Resource(name = "bookServiceImpl")
    private BookService bookService;

    /**
     * http://192.168.2.77:8080/deleteById?id=99890
     *
     * @param id
     * @return
     * @ResponseBody 注解表示将返回的内容直接输出到页面
     */
    @GetMapping("deleteById")
    @ResponseBody
    public String deleteById(@RequestParam long id) {
        bookService.deleteById(id);
        return "删除成功:" + id;
    }
}

发布了458 篇原创文章 · 获赞 884 · 访问量 92万+

猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/102896835
今日推荐