依赖配置
在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
属性注入
使用注解注入属性
- 可以不用提供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层