Spring中的一些常用注解
作者:互联网
目录
13.5 @EnableConfigurationProperties
13.7 @EnableTransactionManagement
【写在前面】
前文链接:SpringBoot项目中常用的几个注解
1. @Autowired
1.1 概念
(1)@Qualifier注入注解,是按类型自动转配的,不支持id匹配。
(2)需要导入Spring-aop依赖包。
(3)bean配置文件中设置<context:annotation-config />,放在<beans></beans>标签中。
(4)@Autowired(required=false) //false, 对象可以为null;true, 对象必须存对象,不能为null。
1.2 示例
2. @Qualifier
2.1 概念
(1)@Qualifier注入注解
(2)@Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配。
(3)不能单独使用。
2.2 示例
<!--配置文件中,保证类型存在对象,且名字不为类的默认名字-->
<bean id="book1" class="com.my.demo.Book">
<bean id="book2" class="com.my.demo.Book">
@Autowired
@Qualifier(value="book1")
private Book book1;
3. @Resource
3.1 概念
(1)注入注解。是J2EE提供的,需导入Package: javax.annotation.Resource;
(2)@Resource如有指定的name属性,先按该属性进行ByName方式查找装配;其次再进行默认的ByName方式进行装配。
(3)如果以上都不成功,则按byType的方式自动装配。
(4)都不成功,则报异常。
3.2 示例
示例1:
<bean id="book1" class="com.my.demo.Book">
<bean id="book2" class="com.my.demo.Book">
@Resource(name = "book2")
private Book book; //测试结果OK
示例2:
<bean id="book1" class="com.my.demo.Book">
@Resource
private Book book; //测试结果OK
小结:
先进行name查找,如果失败,再进行byType查找,成功。
4. @Component
4.1 概念
(1)配置扫描哪些包下的注解。
(2)bean配置文件中指定注解要扫描的包 ,放在<beans></beans>标签中,如下:
<context: component-scan base-package="com.my.demo" />
(3)然后在指定包下编写类,类上添加@Component注解。
4.2 示例
这里可见,在xml配置文件中并没有配置bean的信息,通过@Component("user")让spring自动寻找User类。
import org.springframework.bean.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("user") //相当于<bean id="user" class="com.my.demo" />
public class User{
@Value("sheryl")
public String name;
}
//在指定包下编写测试类
public static void main(String[] args){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean4.xml");
User user=(User)applicationContext.getBean("user");
System.out.println(user.name);
}
5. @Value
5.1 概念
(1)@Value为属性注入值(属性上)
(2)支持如下方式的注入:
注入普通字符
注入操作系统属性
注入表达式结果
注入其他bean属性
注入文件资源
注入网站资源
注入配置文件
5.2 示例
//注入普通字符
@Value("Sheryl")
String name;
//注入操作系统属性
@Value("#{systemProperties['os.name']}")
String name;
//注入表达式结果
@Value("#{domeClass.name}")
String name;
//注入其他bean属性
@Value("#{domeClass.name}")
String name;
//注入文件资源
@Value("classpath: C:/file/demo.txt")
String Resource file;
//注入网站资源
@Value("http://www.baidu.com")
Resource url;12;
//注入配置文件
@Value("${book.name}")
String bookName;
6. @Bean
6.1 概念
(1)@Scope设置Spring容器如何新建Bean实例(方法上,得有@Bean)。
(2)设置类型包括:
Singleton(单例,一个Spring容器中只有一个bean实例,默认模式)
Prototype(每次调用新建一个bean)
Request(Web项目中,给每个http request 新建一个bean)
Session(Web项目中,给每个http session新建一个bean)
GlobalSession(给每一个global http session 新建一个bean实例)
(3)@StepScope 在Spring Batch中还有涉及
(4)@PostConstruct 由JSR-250提供,在构造函数执行完之后执行,等价于在xml配置文件中bean的initMethod
(5)@PreDestory 由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中的bean的destroyMethod
7. 声明bean的几个注解
7.1 @Service
在业务逻辑层使用(service层)
7.2 @Repository
在数据访问层使用(dao层)
7.3 Controller
在展现层使用,控制器的声明(web层)
8. Java配置类的相关注解
8.1 @Configuration
声明当前类为配置类,相当于xml形式的Spring配置(类上),声明当前类为配置类。
其中内部组合了@Component注解,表明这个类是一个bean(类上)。
8.2 @Bean
注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)
8.3 @ComponentScan
用于对Component进行扫描,相当于xm的(类上)
8.4 @WishlyConfiguration
为@Configuration和@ComponentScan的组合注解,可替代这两个。
9. 切面AOP的相关注解
Spring支持AspectJ的注解式切面编程。
9.1 @Aspect
声明一个切面,放在类上。
使用@Before, @After, @Around定义advice(建言),可直接将拦截规则(切点)作为参数。
9.2 Before
在方法执行之前执行的,放在方法上。
9.3 After
在方法执行之后执行的,放在方法上。
9.4 @Around
在方法执行之前和之后执行的,放在方法上。
9.5 PointCut
声明切点。
9.6 @EnableAspectJAutoProxy
在Java配置类中使用该注解,开启Spring对AspectJ代理的支持,放在类上。
10. 环境切换的相关注解
10.1 @Profile
通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境,放在类或方法上。
10.2 @Conditional
Spring4中可以使用该注解来定义条件化的bean,通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化,放在方法上。
11. 异步的相关注解
11.1 @EnableAsync
配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口,放在类上。
11.2 @Async
在实际执行的bean方法中使用该注解来申明其是一个异步任务,方法上或类上的所有方法都将异步,需要@EnableAsync开启异步任务。
12. 定时任务的相关注解
12.1 @EnableScheduling
在配置类上使用,开启计划任务的支持,放在类上。
12.3 Scheduled
来申明这是一个任务,包括cron, fixDelay,fixRate等类型,放在方法上,需要先开启计划任务的支持。
13. Enable注解的说明
下方这些注解主要用来开启对xxx的支持。
13.1 @EnableAspectJAutoProxy
开启对AspectJ自动代理的支持
13.2 @EnableAsync
开启异步方法的支持
13.3 @EnableScheduling
开始计划任务的支持
13.4 @EnableWebMvc
开启Web Mvc的配置支持
13.5 @EnableConfigurationProperties
开启对@ConfigurationProperties注解配置Bean的支持
13.6 @EnableJpaRepository
开始对SpringData JPA Repository的支持
13.7 @EnableTransactionManagement
开始注解式事务的支持
13.8 @EnableCaching
开启注解式的缓存支持
14. 测试的相关注解
14.1 @Runwith
运行器,Spring中通常用语对Junit的支持。
比如:@Runwith(SpringJUnit4ClassRunner.class)
14.2 @ContextConfiguration
用来加载配置ApplicationContext, 其中classes属性用来加载配置类。
比如: @ContextConfiguration(classes={TestConfig.class})
标签:常用,name,Spring,Value,bean,类上,注解,注入 来源: https://blog.csdn.net/sulia1234567890/article/details/123225457