(Spring)使用注解开发
文章目录
- 一.使用注解开发
- 1.1 说明
- 1.2 Bean的实现和属性注入
- 1.3.衍生注解
- 1.4 作用域
- 1.5 小结
- 二. 基于Java类进行配置
一.使用注解开发
1.1 说明
在spring4之后,想要使用注解形式,必须得要引入aop的包
在配置文件中,引入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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"></beans>
1.2 Bean的实现和属性注入
1、配置扫描哪些包下的注解
<!--指定注解扫描包--><context:component-scan base-package="com.zh.pojo"/>
2.在指定包下类中添加注解
@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {@Value("伊泽瑞尔")// 相当于配置文件中 <property name="name" value="伊泽瑞尔"/>private String name;
}
3.测试
public class MyTest {@Testpublic void test1(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");User user = context.getBean("user", User.class);System.out.println(user.name);}
}
1.3.衍生注解
@Component三个衍生注解
为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。
@Controller:web层
@Service:service层
@Repository:dao层
写上这些注解,就相当于将这个类交给Spring管理装配了!
1.4 作用域
@scope
singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。
prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
@Component("user")
@Scope("prototype")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {@Value("伊泽瑞尔")// 相当于配置文件中 <property name="name" value="伊泽瑞尔"/>public String name;
}
1.5 小结
XML与注解比较
XML可以适用任何场景 ,结构清晰,维护方便
注解不是自己提供的类使用不了,开发简单方便
xml与注解整合开发 :推荐最佳实践
xml管理Bean
注解完成属性注入
使用过程中, 可以不用扫描,扫描是为了类上的注解
<context:annotation-config/>
作用:
进行注解驱动注册,从而使注解生效
用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
如果不扫描包,就需要手动配置bean
如果不加注解驱动,则注入的值为null!
二. 基于Java类进行配置
JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
1.编写一个实体类
@Component("hero")//将这个类标注为Spring的一个组件,放到容器中!
public class Hero {@Value("伊泽瑞尔")public String name;
}
2.新建一个config配置包,编写一个MyConfig配置类
@Configuration//代表这是一个配置类
public class MyConfig {@Bean//通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!public Hero hero(){return new Hero();}
}
3.测试
public class MyTest {@Testpublic void test1(){ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);Hero hero = context.getBean("hero", Hero.class);System.out.println(hero.name);}
}
导入其他配置类
再编写一个配置类
@Configuration //代表这是一个配置类
public class MyConfig2 {}
在之前的配置类中导入这个配置类
@Configuration//代表这是一个配置类
@Import(MyConfig.class)//导入其他配置类
public class MyConfig {@Bean//通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!public Hero hero(){return new Hero();}
}
(Spring)使用注解开发相关推荐
- spring原始注解开发-01
我们使用xml-Bean标签的配置方式和注解做对比理解 1.创建UserDao接口以及UserDao的实现类UserDaoImpl(接口代码省略) public class UserDaoImpl i ...
- spring的注解开发@Component @Bean @Value @Autowired、@Qualifier @PropertySource @Configuration
spring的注解开发 启动注解功能 启动注解功能 ⚫ 启动注解扫描,加载类中配置的注解项 ⚫ 说明: ◆ 在进行包所扫描时,会对配置的包及其子包中所有文件进行扫描 ◆ 扫描过程是以文件夹递归迭代的形 ...
- Spring IOC注解开发
Spring IOC注解开发 @(Spring)[Spring, ioc, 注解] Spring IOC注解开发 Spring的IOC的注解使用步骤 创建项目引入jar包 引入配置文件 创建相关包和类 ...
- 【Java从0到架构师】Spring - 纯注解开发
纯注解开发 纯注解开发 - AOP 纯注解开发 - 整合 MyBatis 纯注解开发 - 事务管理 JSR 注解 JSR 注解 - @Resource.@Inject JSR 注解 - @PostCo ...
- Spring之注解开发
8.使用注解开发 8.1.什么是注解? 注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值) 使用注解,注解作用在类上面,方法上面,属性上面 使用注解目的:简化xml文件的配置. ...
- Spring原始注解开发-02
使用@Repository.@Service.@Controller注解配置,使其更加清晰属于哪一层,因为我是模拟的web层,所有没有使用@Controller注解,后面结合web开发会使用到 1.创 ...
- 关于Spring注解开发教程,打包全送你
摘要:spring是我们web开发中必不可少的一个框架,基于传统的xml方式配置bean总觉得太过繁琐,从spring2.5之后注解的出现可以大大简化我们的配置. 本文分享自华为云社区<如何高效 ...
- Spring自定义注解驱动开发使用及源码分析
目录 前言 注解驱动开发使用 需求 代码实现 测试效果 源码分析 BeanDefinitionRegistryPostProcessor接口 解析BeanDefinition 处理Bean上配置的注解 ...
- Spring - Bean注解配置光速入门
Bean注解配置光速入门 步骤一: 创建 web 项目,引入 Spring 的开发包 在 Spring 的注解的 AOP 中需要引入 spring-aop 的 jar 包 步骤二: 引入相关配置文件 ...
- 【Spring Web MVC】Spring Web MVC 注解开发环境搭建
为什么80%的码农都做不了架构师?>>> 1.创建maven项目 创建一个名为:springwebmvc-first的maven项目 2.添加依赖包 要使用springWebM ...
最新文章
- hive2.3.2安装使用
- WebX Qamp;A
- 李宏毅线性代数笔记4:向量
- Ehcache缓存配置
- 使用angular2 自带的指令,快捷创建服务,组件等!
- docker服务启动:service docker start和systemctl start docker两种命令有什么区别?
- 录入学员的身份证后控件焦点转移时根据身份证号码获得生日和性别
- React绑定事件处理函数this的几种方法
- Java中的低GC:使用原语而不是包装器
- mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了
- 【PC】小米路由器Pro(R3P)升级/刷机
- keepalived 健康检查机制说明
- 无法定位程序输入点?isPublicID@QXmlUtils@@SA_NAEVVQString@@@Z于动态链接库 D:\Qt\Qt5.7.0\5.7\msvc2015_64\bin\Qt5Cored
- 《Data-Driven Enhancement of Blurry Retinal Images via GANs》--阅读笔记-MICCAI2019
- 【舆情监测平台】舆情危机处置的四大原则。
- 6.5 静态组织架构
- 百度地图集成(一):百度地图简单实现
- 安徽大学软件工程考研历程
- 第八章 对立统一——异步时钟同步化
- 将VIM打造成强大的IDE