03-Spring使用注解方式注入
基于注解的DI注入
1.导包
环境搭建:导入aop包(spring-aop-4.1.6.RELEASE.jar)

2.创建类



3. 创建spring.xml配置文件(必须在src目录下)
- 该配置文件与之前的有区别,可直接在此复制。
spring.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"
xmlns:context="http://www.springframework.org/schema/context" 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"> <!-- bean definitions here -->
<!-- 扫描使用注解的包,让使用注解的类交由spring管理-->
<context:component-scan base-package="com.yd.pojo"></context:component-scan>
</beans>
4. 在类上添加注解
@Component
public class User implements Serializable {
@Value("张三")
private String name;
@Value("18")
private int age;
@Autowired
private Account account;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", account=" + account +
'}';
}
}
@Component
public class Account implements Serializable {
@Value("111")
private int aid;
@Value("20000")
private double balance;
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
@Override
public String toString() {
return "Account{" +
"aid=" + aid +
", balance=" + balance +
'}';
}
}
运行代码:
public class Demo {
@Test
public void getUser(){
//获取spring配置文件生成的对象
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
//通过bean的id,获取bean对象
User user = (User)ac.getBean("user");
System.out.println(user);
}
}
运行结果:

5. 总结
spring中常用的几个注解
@Component:表示当前修饰的类交给Spring容器管理
- 如果类名上没加别名,则容器中的类id为类名的首字母小写名: User user = (User)ac.getBean("user");
- 如果加别名@Component("tuser"),则容器中的id为tuser: User user = (User)ac.getBean("tuser");
与@Component相同功能的还有三个衍生注解,都是用来修饰类:
@Repository:添加在Dao实现类上
@Service:添加在Service实现类上
@Controller:添加在Controller类上
给基本类型属性注入值使用@Value("..")
可以放在属性上,也可以放在setXXX(..)方法上
给引用类型属性注入值,使用
- @Autowired:根据类型注入(推荐)
Bean作用范围的注解
@Scope 不写默认为singleton
singleton :默认是单例(常用)
prototype :原型模式(常用)

6.对比xml和注解方式区别
XML:可以使用任何场景
开发中,用来注入框架实例
基于xml操作的是.class文件
注解:有些地方用不了,这个类不是自己写的(注解必须写在源代码上)
开发中,用来注入自己写的java类
基于注解操作的是源代码

03-Spring使用注解方式注入的更多相关文章
- Spring使用注解方式注入多例的方式
目前Spring+Netty的开发方式这么火热,想把Netty注册成Spring组件就一定得用多例的方式,我不由得想吐槽明明这么常见的需求网上相关博客都少的很,这里给出Spring使用注解注入多例的方 ...
- 关于spring的注解方式注入默认值(转) -- 首字母小写
1.是首字母小写 比如 UserAction对应的id是userAction 可以通过ApplicationContext 对象的act.getBean("userAction") ...
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...
- EJB通过注解方式注入并使用其他EJB或者服务、配置JBoss数据源
通过注解方式注入并使用其他EJB或者服务 真实项目EJB对象很多,EJB之间也可以互相调用, 在项目HelloWorld下新建接口Other在cn.hqu.ejb3下: public interfac ...
- (转)使用Spring的注解方式实现AOP的细节
http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...
- (转)使用Spring的注解方式实现AOP入门
http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...
- EJB通过注解方式注入并使用其它EJB或者服务、配置JBoss数据源
版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Jerome_s/article/details/37103171 通过注解方式注入并使用其他EJB或者服务 ...
- spring注解方式注入
1.通过Resource注入 1.在属性上注入 1.默认注入 即不指定spring容器里面的名字 匹配规则:先通过属性的名字查找 再通过属性类型与实现类类型匹配查找 当有两个实现类会报错 2.通过指定 ...
- Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果. 手工装配依赖对象 手工装配依赖对象,在这种方式中又有两种编 ...
- spring注解方式注入bean
用注解的方式注入bean,spring的配置文件也要增加一些约束和导入注解所在的包 applicationContext.xml <?xml version="1.0" en ...
随机推荐
- FMC128-基于FMC 1路HD-SDI输入输出,1路复合视频输入输出子卡 工业图像输出 图像模拟源
FMC128-基于FMC 1路HD-SDI输入输出,1路复合视频输入输出子卡 一.板卡概述 FMC板卡包含1路HD-SDI 输入输出,1路复合视频输入输出,用于高清.标清相机的产品测试及智 ...
- Java流程控制之for循环
for循环[重点] 虽然所有的循环结构都可以用while或者do...while表示,但Java提供了另一种语句--for循环,使一些循环结构变得更加简单. for循环语句是支持迭代的一种通用结构,是 ...
- Oracle数据泵恢复用户数据实例
我们测试环境经常会遇到恢复生产数据的情况,我一般比较习惯使用数据泵来搞,这个具体根据自己的业务形态选择适合自己的方式. 此次我们说的是完全恢复用户数据,具体步骤如下: 1.备份数据 expdp tes ...
- MongoDB的启动与停止
1:启动和停止Mongodb 1)从命令行启动 执行mongod,启动MongoDB服务器,mongod有很多可配置的启动选项,可以使用mongod --help查看所有选项 -- ...
- git 本地电脑重新装git后 更新github项目报错 fatal: detected dubious ownership in repository at
解决方法参考: fatal: detected dubious ownership in repository at 'D:/'之解决方法 1.今天在学习git的时候出现这个错误: 2.执行下面代码即 ...
- java通信
RPC:同步 http webservice RMI:同步 RMI 是面向对象方式的 Java RPC . 类要extends java.rmi.Remote接口 JMS:异步 需要有消息队列 act ...
- 第一课 Markdown 实操
1.Markdown (#加空格) 二级标题 (##加空格) 三级标题 (###加空格) 四级标题 (####加空格) 2.字体 Hello world 加粗(字体2边加**) Hello world ...
- ubuntu安装samba服务
第一步 sudo apt-get install samba samba-common 安装完成 第二步 建立一个文件夹作为共享目录 sudo mkdir /home/yz/my_samba my_ ...
- simis报错总结
--笔记开始: 1.在前台模块处理时,[单位应收核定]比[人员缴费信息]的在职人员多一人,但是总金额一样,可能是以下原因造成!!! A.从后台看,若正常核定在职的ab08比ac13多一个人,可能是ac ...
- python-官网下载安装教程
1.官网地址:https://www.python.org/ 2.点击Downloads,选择Windows版本 3.找到对应版本,这里以3.9.12为例,选择结尾为executable instal ...