Spring注解开发
使用注解开发
⚠️ 注意
在Spring4之后,想要使用注解形式,必须要引入aop的包
在配置文件当中,还得要引入一个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:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd" > </beans>
Bean的实现
我们之前都是使用bean的标签进行注入,但是在实际的开发中,我们一般都会使用注解!
- 配置扫描那些包下的注解
<!--指定注解扫描包--> <context:component-scan base-package="com.kuang.pojo"/>
- 在指定包下编写类,增加注解
@Component("user") // 相当于配置文件中 <bean id="user" class="当前注解的类"/> public class User { public String name = "盼盼"; }
- 测试
@Test public void test(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); User user = (User) applicationContext.getBean("user"); System.out.println(user.name); }
属性注入
使用注解注入属性
- 可以不用提供set方法,直接在属性名上添加@Value(“盼盼”)
@Component("user") // 相当于配置文件中 <bean id="user" class="当前注解的类"/> public class User { @Value("盼盼") // 相当于配置文件中 <property name="name" value="盼盼"/> public String name; }
- 如果提供了set方法,在set方法上添加@value(“值”),也可以达到第一种方案的效果
@Component("user") public class User { public String name; @Value("盼盼") public void setName(String name) { this.name = name; } }
衍生注解
我们这些注解,就是替代了在配置文件当中配置步骤而已!更加的方便快捷!
@Component三个衍生注解
为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。
- @Controller :web层
- @Service :service层
- @Repository :dao层
写上这些注解,就相当于将这个类交给Spring管理装配了!
自动装配注解
在之前有讲过,详情见链接🔗
https://editor.csdn.net/md/?articleId=114922123
作用域
@scope
- singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂,所有的对象都会销毁。
- prototype:多例模式。关闭工厂,所有的对象不会销毁。内部的垃圾回收机制会回收
@Controller("user") @Scope("prototype") public class User { @Value("盼盼") public String name; }
小结
XML与注解比较
- XML可以适用于任何场景,结构清晰,维护方便
- 注解不是自己提供的类使用不了,开发简单方便
XMl与注解整个开发:推荐最佳实践 - xml管理Bean
- 注解完成属性注入
- 使用过程中,可以不用扫描,扫描是为了类上的注解
<context:annotation-config/>
作用:
- 进行注解驱动注册,从而使注解生效
- 用于激活那些已经在Spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
- 如果不扫描包,就需要手动配置bean
- 如果不加注解驱动,则注入的值为null
基于Java类进行配置
JavaConfig原来是Spring的一个子项目,它通过Java类的方法来提供Bean的定义信息,在spring4的版本JavaConfig已正式成为Spring4的核心功能。
测试:
- 编写一个实体类,Dog
@Component //将这个类标注为Spring的一个组件,放到容器中! public class Dog { public String name = "dog"; }
- 新建一个config配置包,编写一个MyConfig配置类
@Configuration //代表这是一个配置类 public class MyConfig { @Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id! public Dog dog(){ return new Dog(); } }
- 测试
@Test public void test2(){ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class); Dog dog = (Dog) applicationContext.getBean("dog"); System.out.println(dog.name); }
如何导入其他配置
- 再编写一个配置类!
@Configuration //代表这是一个配置类 public class MyConfig2 {}
- 在之前的配置类中我们来选择导入这个配置类
@Configuration @Import(MyConfig2.class) //导入合并其他配置类,类似于配置文件中的 inculde 标签 public class MyConfig { @Bean public Dog dog(){ return new Dog(); } }
posted on 2021-03-18 00:04 JavaCoderPan 阅读(16) 评论(0) 编辑 收藏 举报 来源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南