spring 注解大全 及用法

本文详细介绍了Spring框架中的注解,包括@Controller、@ResponseBody、@RestController等用于定义控制器的注解,以及用于依赖注入的注解如@Autowired、@Qualifier等。还探讨了改变bean作用范围的注解和与bean生命周期相关的注解,提供了丰富的案例说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.spring 注解

//@Controller
//@ResponseBody
@RestController
@RequestMapping("car")
public class CarController {
    //注意1:: 参数列表里的参数类型,最好使用引用类型,
    //如果浏览器没有传值过来就用默认值,但使用基本类型会抛异常的
    //解析普通的get传递的参数
    //http://localhost:8080/car/get?id=100&name=张三
    @RequestMapping("get")

 @RequestMapping("get2/{id}/{name}")注解

 //解析restful传递的参数:简化了get方式参数的写法
    //http://localhost:8080/car/get2/100/张三
    @RequestMapping("get2/{id}/{name}")
 //{x}--通过{}获取访问路径中携带的参数,并且交给变量x保存

 //@PathVariable -- 获取{}中间变量的值//是C层,控制层,用来接受请求和给出响应 @RestController

@RequestMapping("stu")
    public String get2(@PathVariable Integer id,

1.1 @Component

作用:

调用无参构造创建一个bean对象,并把对象存入spring的IOC容器,交由spring容器进行管理。相当于在xml中配置一个bean。

属性:

value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.2 @Controller

作用:

作用上与@Component。一般用于表现层的注解。

属性:

value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.3 @Service

作用:

作用上与@Component。一般用于业务层的注解。

属性:

value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.4 @Repository

作用:

作用上与@Component。一般用于持久层的注解。

属性:

value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.5 @Bean

作用:

用于把当前方法的返回值作为bean对象存入spring的ioc容器中

属性:

name:用于指定bean的id。当不写时,默认值是当前方法的名称。注意:当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象,查找的方式和Autowired注解的作用是一样的。

案例:

/**
 * 获取DataSource对象
 * @return
 */
@Bean(value = "dataSource")
public DataSource getDataSource() {
    try {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(this.driver);
        dataSource.setJdbcUrl(this.url);
        dataSource.setUser(this.username);
        dataSource.setPassword(this.password);
        return dataSource;
    }catch (Exception exception) {
        throw new RuntimeException(exception);
    }
}

2)用于依赖注入的注解

2.1 @Autowired

作用:

@Autowire和@Resource都是Spring支持的注解形式动态装配bean的方式。Autowire默认按照类型(byType)装配,如果想要按照名称(byName)装配,需结合@Qualifier注解使用。

属性:

required:@Autowire注解默认情况下要求依赖对象必须存在。如果不存在,则在注入的时候会抛出异常。如果允许依赖对象为null,需设置required属性为false。

案例:

@Autowire 
@Qualifier("userService") 
private UserService userService;

2.2 @Qualifier

作用:

在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和  @Autowire一起使用;但是给方法参数注入时,可以独立使用。

属性:

value:用于指定要注入的bean的id,其中,该属性可以省略不写。

案例:

@Autowire
@Qualifier(value="userService") 
//@Qualifier("userService")     //value属性可以省略不写
private UserService userService;

2.3 @Resource

作用:

@Autowire和@Resource都是Spring支持的注解形式动态装配bean的方式。@Resource默认按照名称(byName)装配,名称可以通过name属性指定。如果没有指定name,则注解在字段上时,默认取(name=字段名称)装配。如果注解在setter方法上时,默认取(name=属性名称)装配。

属性:

name:用于指定要注入的bean的id
type:用于指定要注入的bean的type

装配顺序

1.如果同时指定name和type属性,则找到唯一匹配的bean装配,未找到则抛异常;
2.如果指定name属性,则按照名称(byName)装配,未找到则抛异常;
3.如果指定type属性,则按照类型(byType)装配,未找到或者找到多个则抛异常;
4.既未指定name属性,又未指定type属性,则按照名称(byName)装配;如果未找到,则按照类型(byType)装配。

案例:

@Resource(name="userService")
//@Resource(type="userService")
//@Resource(name="userService", type="UserService")
private UserService userService;

2.4 @Value

作用:

通过@Value可以将外部的值动态注入到Bean中,可以为基本类型数据和String类型数据的变量注入数据

案例:

// 1.基本类型数据和String类型数据的变量注入数据
@Value("tom") 
private String name;
@Value("18") 
private Integer age;


// 2.从properties配置文件中获取数据并设置到成员变量中
// 2.1jdbcConfig.properties配置文件定义如下
jdbc.driver \= com.mysql.jdbc.Driver  
jdbc.url \= jdbc:mysql://localhost:3306/eesy  
jdbc.username \= root  
jdbc.password \= root

// 2.2获取数据如下
@Value("${jdbc.driver}")  
private String driver;

@Value("${jdbc.url}")  
private String url;  
  
@Value("${jdbc.username}")  
private String username;  
  
@Value("${jdbc.password}")  
private String password;

3)用于改变bean作用范围的注解

3.1 @Scope

作用:

指定bean的作用范围。

属性:

value:
    1)singleton:单例
    2)prototype:多例
    3)request: 
    4)session: 
    5)globalsession:

案例:

@Autowire
@Scope(value="prototype")
private UserService userService;

4)生命周期相关的注解

4.1 @PostConstruct

作用:

指定初始化方法

案例:

@PostConstruct  
public void init() {  
    System.out.println("初始化方法执行");  
}

4.2 @PreDestroy

作用:

指定销毁方法

案例:

@PreDestroy  
public void destroy() {  
    System.out.println("销毁方法执行");  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值