@Configuration
说明
相当于把该类作为Spring的XML配置文件中的beans标签,说明这是一个配置类
用法
将该注解放在类的上面
1 2 3 4 5 6 7 8 9 10 11 12
| package com.ledao.config;
import org.springframework.context.annotation.Configuration;
@Configuration public class MyConfig { }
|
@Bean
说明
等价于Spring的XML配置文件中的bean标签,用于注册bean对象
用法
标注在方法上(返回某个实例的方法),如果没有定义name属性那么bean的id为方法名,定义了name属性那么bean的id为name的属性值(这时候就不可以用方法名了);这个方法的名字相当于bean标签中id属性,这个方法的返回值相当于bean标签中的class属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.ledao.config;
import com.ledao.entity.Student; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration public class MyConfig {
@Bean public Student student(){ Student student = new Student(); student.setName("tom"); return student; } }
|
@Component
说明
用于注册bean对象,相当于XML配置文件的bean标签
用法
将该注解放在类的上面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.ledao.entity;
import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;
@Component public class Student {
@Value(value = "tom") private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@Override public String toString() { return "Student{" + "name='" + name + '\'' + '}'; } }
|
@Repository
说明
用于注册bean对象,相当于XML配置文件的bean标签,和@Component一样的效果,对应持久层(即dao接口的实现类),主要用于数据库相关操作
用法
在dao接口的实现类上使用这个注解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package com.ledao.dao;
import org.springframework.stereotype.Repository;
@Repository(value = "userDao") public class UserDaoImpl implements UserDao{
@Override public void add() { System.out.println("添加用户"); }
@Override public void delete() { System.out.println("删除用户"); }
@Override public void update() { System.out.println("修改用户"); }
@Override public void findById() { System.out.println("根据id查找用户"); } }
|
@Service
说明
用于注册bean对象,相当于XML配置文件的bean标签,和@Component一样的效果,对应服务层(即Service接口的实现类),主要用于设计一些复杂的逻辑,需要用到dao层
用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package com.ledao.service.impl;
import com.ledao.dao.UserDao; import com.ledao.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
@Service(value = "userService") public class UserServiceImpl implements UserService {
@Autowired private UserDao userDao;
@Override public void add() { userDao.add(); }
@Override public void delete() { userDao.delete(); }
@Override public void update() { userDao.update(); }
@Override public void findById() { userDao.findById(); } }
|
@Controller
说明
用于注册bean对象,相当于XML配置文件的bean标签,和@Component一样的效果,对应Spring MVC控制层,主要用于接收用户请求并调用Service层返回数据给前端页面
用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| package com.ledao.controller.admin;
import com.ledao.entity.BookType; import com.ledao.entity.PageBean; import com.ledao.service.BookService; import com.ledao.service.BookTypeService; import com.ledao.util.StringUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map;
@RestController @RequestMapping("/admin/bookType") public class BookTypeAdminController {
@Resource private BookTypeService bookTypeService;
@RequestMapping("/checkBookTypeId") public Map<String, Object> checkBookTypeId(@RequestParam(value = "bookTypeId", required = false) Integer bookTypeId) { Map<String, Object> resultMap = new HashMap<>(16); BookType bookType = bookTypeService.findById(bookTypeId); if (bookType == null) { resultMap.put("success", false); resultMap.put("errorInfo", "你选择的图书类别不存在,请重新选择!!"); } else { resultMap.put("success", true); } return resultMap; } }
|
@Value
用来给变量注入值,详细说明和用法查看博客:Spring框架@Value注解的使用
@Autowired和@Resource
这两个注解都是用于实现Spring的自动装配,详细说明和用法查看博客:使用注解实现Spring自动装配
@Scope
定义配置类下的某个使用了@bean注解的方法
的作用域
用法
Spring bean的默认作用域为singleton
在某个使用了@bean注解的方法
的上面使用这个注解时定义该方法的作用域,只对该方法有效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.ledao.config;
import com.ledao.entity.Student; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope;
@Configuration public class MyConfig {
@Bean @Scope(value = "prototype") public Student student(){ return new Student(); } }
|
@ComponentScan
说明
用于定义扫描的路径并从中找出标识了需要装配的类自动装配到spring的bean容器中(使用@Component注解的类)
用法
一般在配置类上使用,扫描指定包下的类,将所有需要装配的类都装配到spring的bean容器中;如果不使用这个注解的话,只会装配该配置类下使用了@bean的方法对应的类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.ledao.config;
import com.ledao.entity.Student; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;
@Configuration @ComponentScan("com.ledao.entity") public class MyConfig {
@Bean public Student student(){ return new Student(); } }
|
如果要扫描多个包,用法如下:(也可以使用@ComponentScans注解)
1
| @ComponentScan(value = {"com.ledao.entity","com.ledao.service.impl"})
|
@ComponentScans
说明
和@ComponentScan一样的效果,用于扫描多个包
用法
1
| @ComponentScans(value = {@ComponentScan(value = "com.ledao.entity"), @ComponentScan(value = "com.ledao.service.impl")})
|
@Import
说明
用于导入其他配置类的配置
用法
在要导入其他配置类
的配置类上使用,@Import()括号内填要导入的配置类名称.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package com.ledao.config;
import com.ledao.entity.Student; import org.springframework.context.annotation.*;
@Configuration @Import(MyConfig2.class) public class MyConfig {
@Bean public Student student(){ return new Student(); } }
|
@Aspect
说明
用于标注使用这个注解的类是一个切面
用法
查看博客:Spring 使用注解实现 AOP | LeDao 的博客 (zoutl.cn)
@Before
说明
执行业务代码前先执行这个方法
用法
查看博客:Spring 使用注解实现 AOP | LeDao 的博客 (zoutl.cn)
@After
说明
执行业务代码后再执行这个方法
用法
查看博客:Spring 使用注解实现 AOP | LeDao 的博客 (zoutl.cn)
@Around
说明
环绕增强方法使用
用法
查看博客:Spring 使用注解实现 AOP | LeDao 的博客 (zoutl.cn)
@EnableAspectJAutoProxy
说明
启动AspectJ自动代理
用法
查看博客:Spring 使用注解实现 AOP | LeDao 的博客 (zoutl.cn)
@Transactional
说明
用于实现事务
用法
查看博客:Spring 使用 @Transactional 注解实现事务 | LeDao 的博客 (zoutl.cn)