基于注解的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使用注解方式注入的更多相关文章

  1. Spring使用注解方式注入多例的方式

    目前Spring+Netty的开发方式这么火热,想把Netty注册成Spring组件就一定得用多例的方式,我不由得想吐槽明明这么常见的需求网上相关博客都少的很,这里给出Spring使用注解注入多例的方 ...

  2. 关于spring的注解方式注入默认值(转) -- 首字母小写

    1.是首字母小写 比如 UserAction对应的id是userAction 可以通过ApplicationContext 对象的act.getBean("userAction") ...

  3. mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

    相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...

  4. EJB通过注解方式注入并使用其他EJB或者服务、配置JBoss数据源

    通过注解方式注入并使用其他EJB或者服务 真实项目EJB对象很多,EJB之间也可以互相调用, 在项目HelloWorld下新建接口Other在cn.hqu.ejb3下: public interfac ...

  5. (转)使用Spring的注解方式实现AOP的细节

    http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...

  6. (转)使用Spring的注解方式实现AOP入门

    http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...

  7. EJB通过注解方式注入并使用其它EJB或者服务、配置JBoss数据源

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Jerome_s/article/details/37103171 通过注解方式注入并使用其他EJB或者服务 ...

  8. spring注解方式注入

    1.通过Resource注入 1.在属性上注入 1.默认注入 即不指定spring容器里面的名字 匹配规则:先通过属性的名字查找 再通过属性类型与实现类类型匹配查找 当有两个实现类会报错 2.通过指定 ...

  9. Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理

        注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果. 手工装配依赖对象  手工装配依赖对象,在这种方式中又有两种编 ...

  10. spring注解方式注入bean

    用注解的方式注入bean,spring的配置文件也要增加一些约束和导入注解所在的包 applicationContext.xml <?xml version="1.0" en ...

随机推荐

  1. LP1-3:一支钢笔的测试

    UI: 长.宽 .高 钢笔:笔身.笔尖.笔帽 功能: 写字:出水量比较合适 笔帽能扣上,不容易掉 钢笔笔夹 打水 笔尖的粗细程度 容错性: 不能漏水 易用性: 是否光滑 笔尖是否可以换 笔囊是否可以换 ...

  2. Safari浏览器如何收藏网页?

    Safari浏览器是MacOS所自带的一款功能强劲的浏览器,许多MacOS的用户在使用过Safari浏览器后就不会去下载其他浏览器了.对于很多Mac新手用户来说,如何使用Safari浏览器来收藏喜欢的 ...

  3. SQL相关知识

    SQL(Structure Query Language)  结构化查询语言,它是关系型数据库的应用语言,由IBM上世纪70年代开发出来的.     SQL语言规范       语句以;封号结束   ...

  4. noi 1.1 3 对齐输出

    描述 输入三个整数,按每个整数占8个字符的宽度,右对齐输出它们. 输入 只有一行,包含三个整数,整数之间以一个空格分开. 输出 只有一行,按照格式要求依次输出三个整数,之间以一个空格分开. 样例输入 ...

  5. 基础框架SSM导学

    SSM Spring SpringMVC Maven高级 SpringBoot MybatisPlus spring官网:http://spring.io

  6. #科技 #资讯 #生活 微信测试更多图片打开方式,神州圆满发射,英伟达或停产性价比神卡,SAMSUNG新一代显存带宽容量双翻倍,这就是今天的其它大新闻

    今天是2022年12月01日 十一月初八 现在是中午12:10 下面是今天的其他大新闻 #NEWS 1 # 微信测试用不同小程序打开图片:快捷调用小程序打开图片.视频.文件 ( 新浪科技 ) 据悉,微 ...

  7. vm 16 player安装与网络配置

    1.密钥: FA1M0-89YE3-081TQ-AFNX9-NKUC0 2.安装步骤: xshell6,要先右键管理员运行绿化.bat,再双击.exe 3.一般的虚拟机,需要win上的v8适配器的ip ...

  8. js 获取鼠标位置的两种方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. ios底部安全距离

    一.使用背景 苹果官方推荐:使用env(),constant()来适配,env()和constant(),是IOS11新增特性,用于设定安全区域与边界的距离 safe-area-inset-left: ...

  10. 2003031118—李伟—Python数据分析第四周作业—第二次作业

    项目 matplotlib的使用 课程班级博客链接 班级博客 这个作业要求链接 作业要求 博客名称 2003031118-李伟-Python数据分析第四周作业-第二次作业 要求 每道题要有题目,代码( ...