前提:需要引入AOP的包
这里我使用的是Maven项目。
pom.xml只需一个
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.0</version>
</dependency>
除了导包,还需要在配置文件中增强文件头。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
在原来的基础上增加即可。
还需要在下面添加支持:其实就是扫描注解。
<!--指定注解扫描包-->
<context:component-scan base-package="com.dao"/>
base-package因具体内容而定。
先在该包下编写一个类。
package com.dao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("yii")
public class yi {
@Value("摸鸡鸡")
public String name;
@Value("哒哒哒啊")
public void setName(String name) {
this.name = name;
}
}
主要有两个注解,@Component:相当于配置文件中 <bean id="user" class="当前注解的类"/>
@Value:相当于配置文件中 <property name="name" value="摸鸡鸡"/>
测试:
@Test
public void test(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");
yi yii= (yi) applicationContext.getBean("yii");
System.out.println(yii.name);
}
我们可以发现,在setter上面的注解优先级是大于定义该属性时的注解。
作用域
- singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。
- prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
@Component("yii")
@Scope("singleton")
public class yi {
@Value("摸鸡鸡")
public String name;
public void setName(String name) {
this.name = name;
}
}
@Test
public void test(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");
yi yii= (yi) applicationContext.getBean("yii");
yi yii1= (yi) applicationContext.getBean("yii");
System.out.println(yii+"\n"+yii1);
}
}
单例模式,对象是同一个。
@Component("yii")
@Scope("prototype")
public class yi {
@Value("摸鸡鸡")
public String name;
public void setName(String name) {
this.name = name;
}
}
@Test
public void test(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");
yi yii= (yi) applicationContext.getBean("yii");
yi yii1= (yi) applicationContext.getBean("yii");
System.out.println(yii+"\n"+yii1);
}
}
多例模式,不是同一个对象。
推荐:注解和XML整合开发