@Component @Controller @Service @Repository

依赖配置

在spring4之后,想要使用注解形式,必须得要引入aop的包


aop.png

在配置文件当中,还得要引入一个context约束


context.png
anno.png

Bean的实现

1、配置扫描哪些包下的注解 (指定注解扫描包)

 <context:component-scan base-package="com.zhao"/>

2、在指定包下编写类,并添加注解

package com.zhao.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
//@Component("user")
// @Component  @Component("user")  相当于配置文件中 <bean id="user" class="当前注解的类"/>

@Scope("singleton")
// 指定Bean作用域为singleton, 此外还有 Prototype、Request、Session

public class User {

    @Value("qingtianzhu")
    public String name;

}

3、测试

import com.zhao.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {


    @Test
    public void testScanUser(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = context.getBean("user",User.class);
        System.out.println(user.name);
    }

}
configuration.png

属性注入

使用注解注入属性

  1. 可以不用提供set方法,直接在直接名上添加@value("值")
@Component
public class User {

    @Value("qingtianzhu")
    // 相当于配置文件中 <property name="name" value="qingtianzhu"/>
    public String name;

}

2、如果提供了set方法,在set方法上添加@value("值");

@Component
public class User {

    public String name;

    @Value("qingtianzhu")
    public void setName(String name) {
        this.name = name;
    }
}

@Component三个衍生注解

为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

  • @Controller:web层
  • @Service:service层
  • @Repository:dao层
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容