使用注解配置Spring

Spring2.5开始,通过注解配置bean功能逐渐强大。Spring boot更是把注解配置用到极致,将开发者工作量降至最低。

1. 使用注解的条件

新增context约束

<?xml version="1.0" encoding="UTF-8"?> <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/context ">

开启对注解的支持

<!-- 开启对指定包进行扫描 --> <context:component-scan base-package="com"/> <!-- 开启对注解的支持 --> <context:annotation-config/>

Spring4以后,需要导入aop包。

2 @Component注解

@Component把该类在Spring容器中注册成一个bean。

@Value修饰属性,或者set方法,用于注入属性值。

@Component public class User { public String name; @Value("Zuka") public void setName(String name) { this.name = name; } public String getName() { return name; } } 3 衍生的注解

@Component有三个衍生注解,用于Spring Web编程中MVC模型分层。

@Repository 持久数据

@Service 服务

@Controller 控制器

这四个注解的本质都一样,都是把类注册成为Spring中的一个bean。

4 作用域

@Scope ,用于指定bean是单例还是原型模式。

@Repository @Scope("Singleton") public class UserDao { public String name; @Value("Zuka") public void setName(String name) { this.name = name; } public String getName() { return name; } } 5、@Configuration配置bean

用@Configuration修饰类

@Bean修饰获取bean的方法。

使用纯JAVA代码进行配置,完全不需要xml配置。

Appconfig是Spring的一个子项目,Spring4 以后,成为官方推荐的配置方式。

//@Configuration本身也是@Component,注册成Spring容器中的一个bean。 //@Configuration代表这是一个配置类,等价于applicationContext.xml文件 @Configuration public class appconfig { //@Bean表示将该类注册到Spring容器中,相当于bean标签 //@Bean 修饰的方法名相当于 bean标签中的id属性 //@Bean 修饰的方法返回值相当于bean标签中的class属性 @Bean public User getUser(){ return new User(); } }

@Import 用于导入其它配置类,可以将两个配置类融合在一起。

@Configuration @Import(Config2.class) public class Appconfig { @Bean public User getUser(){ return new User(); } } 6、AnnotationConfigApplicationContext获取bean

测试类中,要获取bean,通过实例化一个AnnotationConfigApplicationContext类,构造参数为JAVA配置类Appconfig的类名。

public class UserTest extends TestCase { @Test public void test(){ ApplicationContext context=new AnnotationConfigApplicationContext(Appconfig.class); User user=context.getBean("getUser",User.class); System.out.println(user.toString());

这种纯JAVA配置的方式,在SpringBoot中随处可见。

7、自动装配bean的注解

在xml文件中配置

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <bean/> <bean/> <bean/> <bean/> <bean/> </beans>

@Autowired(仅限Spring框架内使用)
默认按照byType方式来装配bean,接着按照byName方式匹配。若无法唯一匹配,使用@Qualifier(value = XXX)来指定。

public class Person { @Autowired @Qualifier(value = "dog2") private Dog dog; @Autowired @Qualifier(value = "cat1") private Cat cat; }

@Resource(普通JAVA就可使用)
默认按照byName方式来匹配bean属性,其次按照byType方式来装配bean属性,若无法唯一匹配,使用@Resource(name=”XXX”)来指定。

public class Person { @Resource(name = "dog2") private Dog dog; @Resource(name = "cat1") private Cat cat; private String name; public Dog getDog() { return dog; } public Cat getCat() { return cat; } }

@Nullable :字段标记了这个注解,说明字段可以为null。

8、xml配置和注解配置区别

xml配置和注解配置

xml配置更加灵活,适用于所有的场景,维护简单方便。

注解配置,只针对该类有效,维护起来比较分散。

最佳实践

xml:用来配置所有的bean

注解:用来注入属性值。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywpyg.html