spring自动注入的三种方式
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
/**
* Declares whether the annotated dependency is required.
* <p>Defaults to {@code true}.
*/
boolean required() default true;
}
@Configuration
@ComponentScan(basePackages = {"cn.monolog.service"})
public class AutowiredBeanConfig { @Bean(value = "bookDao1")
public BookDao bookDao1() {
BookDao bookDao = new BookDao();
bookDao.setLabel("bookDao1");
return bookDao;
} @Bean(value = "bookDao2")
@Primary
public BookDao bookDao2() {
BookDao bookDao = new BookDao();
bookDao.setLabel("bookDao2");
return bookDao;
} @Bean(value = "bookDao3")
public BookDao bookDao3() {
BookDao bookDao = new BookDao();
bookDao.setLabel("bookDao3");
return bookDao;
}
}
@Autowired
@Qualifier(value = "bookDao1")
private BookDao bookDao3;
@Configuration
@ComponentScan(basePackages = {"cn.monolog.service"})
public class ResourceBeanConfig { @Bean(value = "carDao1")
public CarDao carDao1() {
CarDao carDao = new CarDao();
carDao.setLabel("1");
return carDao;
} @Bean(value = "carDao2")
public CarDao carDao() {
CarDao carDao = new CarDao();
carDao.setLabel("2");
return carDao;
}
}
//自动注入
@Resource
private CarDao carDao2;
//自动注入
@Resource(name = "carDao1")
private CarDao carDao2;
@Configuration
public class InjectBeanConfig {
@Bean(value = "employeeDao1")
public EmployeeDao employeeDao1() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("1");
return employeeDao;
}
}
@Inject
private EmployeeDao employeeDao3;
@Configuration
public class InjectBeanConfig {
@Bean(value = "employeeDao1")
public EmployeeDao employeeDao1() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("1");
return employeeDao;
}
@Bean(value = "employeeDao2")
public EmployeeDao employeeDao2() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("2");
return employeeDao;
}
@Bean(value = "employeeDao3")
public EmployeeDao employeeDao3() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("3");
return employeeDao;
}
}
@Inject
private EmployeeDao employeeDao3;
@Configuration
public class InjectBeanConfig {
@Bean(value = "employeeDao1")
public EmployeeDao employeeDao1() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("1");
return employeeDao;
}
@Bean(value = "employeeDao2")
@Primary
public EmployeeDao employeeDao2() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("2");
return employeeDao;
}
@Bean(value = "employeeDao3")
public EmployeeDao employeeDao3() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setLabel("3");
return employeeDao;
}
}
spring自动注入的三种方式的更多相关文章
- Spring静态注入的三种方式
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chen1403876161/article/details/53644024Spring静态注入的三 ...
- SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...
- SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式
在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...
- Spring依赖注入的三种方式
看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...
- Spring自动注入的几种方式
---恢复内容开始--- @Service("accountEmailService")public class AccountEmailServiceImpl impleme ...
- Spring基础05——Spring依赖注入的三种方式
Spring支持3种依赖注入的方式:属性注入.构造器注入.工厂 1.属性注入 属性注入即通过setter方法注入Bean的属性或依赖的对象.使用<property>元素,使用name属性指 ...
- spring——依赖注入的三种方式
1 构造器注入(与构造器有直接关系) 默认无参构造 3种构造方式:通过<contructor-arg>调用类中的构造器 下标 <bean id="userService&q ...
- Spring——自动装配的三种实现方式
依赖注入的本质是装配,装配是依赖注入的具体行为 spring会在上下文中自动寻找,并自动给bean装配属性 自动装配的三种方式 (1).在xml中显式的装配 (2).在java中显式的装配 (3).隐 ...
- spring生成EntityManagerFactory的三种方式
spring生成EntityManagerFactory的三种方式 1.LocalEntityManagerFactoryBean只是简单环境中使用.它使用JPA PersistenceProvide ...
随机推荐
- PHP批量导入excell表格到mysql数据库
PHP批量导入excell表格到mysql数据库,本人通过亲自测试,在这里分享给大家 1,下载 php excell类库 网上搜索可以下载,这里不写地址 2,建html文件 <form met ...
- django编辑框实现
一些常用的: CKEditor UEEditor TinyEditor KindEditor 下载: http://kindeditor.net/down.php 使用方法: <textarea ...
- git LF will be replaced by CRLF in hellogit.txt
这个是换行符的问题 参见:https://blog.csdn.net/starry_night9280/article/details/53207928
- 【学习总结】快速上手Linux玩转典型应用-第4章-准备工作
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 准备工作一 2. 准备工作二 ===================================================== ...
- Centos克隆虚拟机后配置网络
修改网卡相关信息,复制第二个网卡的mac地址. vim /etc/udev/rules.d/70-persistent-net.rules 修改网卡的信息 vim /etc/sysconfig/net ...
- Linux系统安装使用实录--传送门(持续更新)
1.安装Linux系统 经过两种系统对比,发现ubuntu的资源依赖更方便更全, centos安装时可以配置开发环境,默认有安装的jdk,这一点比Ubuntu方便一点. win10+centos ...
- SQL SERVER将多行数据合并成一行(转)
1)比如表中有三列数据: 2)执行如下查询: 1 SELECT [USER_NAME], [USER_ACCOUNT] 2 , [ROLE_NAME] = stuff(( 3 SELECT ',' + ...
- 分页控件SSTab
一.分页控件SSTab概述1.作用:采用分页形式查询或编辑数据表中数据.2.添加到控件箱菜单命令:工程 | 部件,选择:Microsoft Tabbed Dialog Control 6.0 (SP6 ...
- 牛客练习赛14 D比较月亮大小 (实现)
链接:https://ac.nowcoder.com/acm/contest/82/D来源:牛客网 题目描述 点点是一名出色的狼人.众所周知,狼人只有在满月之夜才会变成狼. 同时,月亮的大小随着时间变 ...
- layui js动态添加的面板不能折叠
layui 动态添加dom后一般调用 layer.form.render()更新dom就可以了,但是我动态添加一个面板后form.render()就没有效果,要用layui.element.rende ...