Spring注解-注解&Java配置
Spring配置可以分为两种方式:
- XML配置
- 注解配置
而注解配置又可分为注解配置和Java配置
注解配置
使用注解配置首先要导入context依赖,配置注解支持,并配置组件扫描:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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:annotation-config/>
<context:component-scan base-package="com.pyt"/>
配置好以上几项,我们就可以使用注解了。
常用注解如下:
- @Component:是Spring管理组件的通用原型
下面三个注解用于更具体的用例,分别用于服务层,表示层,持久层 - @Service
- @Controller
- @Repository
以上注解的功能是相同的,都是将类装配到Spring容器中。
@Component
@Component
public class User {
@Value("pyt")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Service
@Service
public class UserService {
}
@Controller
@Controller
public class UserController {
}
@Repository
@Repository
public class UserDao {
}
Java 配置
在java配置中,需要定义一个单独的配置类
@Confirguration 相当于spring的配置文件XML
@Bean 用到方法上,表示当前方法的返回值是一个bean
/**
* @Configuration也会被容器托管,注册到容器中,因为他本来就是一个@Component
* @Configuration代表这是一个配置类,相当于之前的applicationContext.xml
*/
@Configuration
@ComponentScan("com.pyt")
@Import(MyConfig2.class)
public class MyConfig {
/**
* @Bean注册一个bean,相当于之前的一个bean标签
* 该方法名相当于bean标签中的id
* 返回值相当于bean标签的class属性
* @returnl
*/
@Bean
public User getUser(){
return new User();
}
}
java@Import(MyConfig2.class)
与xml中的import标签的功能相同,都是将多个配置文件导入合并为整体。
@Bean和@Component的区别
-
作用对象不同
@Component作用在类上,@Bean作用于方法上 -
@Component 通常是通过路径扫描来自动侦测以及自动装配到 Spring 容器中
@Bean注解通常是我们在标有该注解的方法中定义产生这个 bean -
@Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。