【Spring】006-Spring注解开发

tech2025-03-30  1

最后更新时间:2020年9月17日19:11:25

目录

一、前述

1、使用注解开发的两个条件

2、环境搭建

第一步:新建一个Moudle,并创建实体类User

第二步:新建配置文件applicationContext.xml

第三步:编写测试类

测试结果:

二、Bean的注入

1、@Component注解

2、代码示例(见环境搭建)

3、@Bean注解

三、属性的注入

1、@Value注解

作用:

属性:

SpEL的写法:

2、@Value注解演示

第一步:修改实体类User

测试结果:

四、自动装配注解

五、作用域

1、@Scope注解

取值:

2、示例代码

第一步:修改User类

修改测试类:

测试结果:

六、总结

1、xml与注解

xml:

注解:

2、xml与注解的最佳实践

3、注意


一、前述

1、使用注解开发的两个条件

必须导入AOP;

必须在配置文件添加context约束和开启注解支持;

 

2、环境搭建

第一步:新建一个Moudle,并创建实体类User

package com.zibo.pojo; import org.springframework.stereotype.Component; //等价于:<bean id="user" class="com.zibo.pojo.User"/> //@Component:组件 @Component public class User { public String name = "訾博"; }

第二步:新建配置文件applicationContext.xml

<?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:component-scan base-package="com.zibo"/> <!--开启注解支持--> <context:annotation-config/> </beans>

第三步:编写测试类

package com.zibo; import com.zibo.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = context.getBean("user", User.class); System.out.println(user.name); } }

测试结果:

訾博

 

二、Bean的注入

1、@Component注解

@Component:用于把当前类作为存入spring容器中;

属性:value用于指定bean的id,当我们不写时,默认为当前类名,首字母小写;

例如:

@Component("user")

@Controller:一般用在表现层;

@Service:一般用在业务层;

@Repository:一般用在持久层;

上面三个注解跟Component的作用是一模一样的,它们三个是spring框架为三层提供的明确注解,使三层对象看起来更清晰;

 

2、代码示例(见环境搭建)

 

3、@Bean注解

用在方法上,方法返回值即是所注入的bean;

 

三、属性的注入

1、@Value注解

作用:

用于注入基本类型和String类型;

复杂类型(集合、自定义类型等)使用xml配置;

可以用在属性和set方法上,同样用在属性上时set方法不是必须的;

 

属性:

value指定数据的值,它可以使用spring中的SpEL表达式(也就是Spring的EL表达式);

 

SpEL的写法:

${表达式};

 

2、@Value注解演示

第一步:修改实体类User

package com.zibo.pojo; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; //等价于:<bean id="user" class="com.zibo.pojo.User"/> //@Component:组件 @Component public class User { //等价于<property name="name" value="訾博"/> @Value("訾博") public String name; }

测试结果:

訾博

 

四、自动装配注解

(见【Spring】005-Bean的自动装配)

 

五、作用域

1、@Scope注解

取值:

单例模式:singleton;

多例模式:prototype;

web相关,暂不多做赘述;

 

2、示例代码

第一步:修改User类

package com.zibo.pojo; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; //等价于:<bean id="user" class="com.zibo.pojo.User"/> //@Component:组件 @Component @Scope("prototype") public class User { //等价于<property name="name" value="訾博"/> @Value("訾博") public String name; }

修改测试类:

package com.zibo; import com.zibo.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = context.getBean("user", User.class); User user1 = context.getBean("user", User.class); System.out.println(user == user1); } }

测试结果:

false

 

六、总结

1、xml与注解

xml:

更加万能,适用于任何场合,维护方便;

 

注解:

不是自己的类是用不了,维护相对复杂;

 

2、xml与注解的最佳实践

xml用来管理bean;

注解只负责完成属性的注入;

 

3、注意

一定要导入AOP、开启注解的支持以及扫描包;

 

 

 

 

 

 

 

 

 

最新回复(0)