【Spring】的【Bean】管理(注解)【四个相同功能的注解】
【Spring】的【Bean】管理(注解)【四个相同功能的注解】
- 注解:代码里面特殊的标记,使用注解也可以完成一些相关的功能。
- 注解写法:@注解名称(属性名称=属性值)
- 注解使用在类、方法、属性上面
(注解可以替代配置文件,并非完全替代):
1.创建类,创建方法
public class User {
public void add(){
System.out.println("add-----------");
}
}
2.创建spring配置文件,引入约束
<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 -->
</beans>
3.配置开启注解扫描
<!--
开启注解扫描功能
(1)到包里面扫描类、方法、属性上面是否有注解
-->
<context:component-scan base-package="com.anno"></context:component-scan> <!-- 只会扫描属性上面的注解,所以我们不用 -->
<context:annotation-config></context:annotation-config>
一、 使用注解创建对象
在创建对象的类上面使用注解实现
@Component(value="user") //<bean id="" class="">
public class User {
public void add(){
System.out.println("add-----------");
}
}
写测试代码
@Test
public void testAno(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User)applicationContext.getBean("user");
user.add();
}
创建对象有四个注解,下面还有三个:
|
Spring中提供了@Component的三个衍生注解:(功能目前来说是一致的,都是用来创建对象) |
|
|
@Controller |
Web层 |
|
@Service |
业务层 |
|
@Repository |
持久层 |
|
这三个注解是为了让标注类本身用途清晰,spring在后续的版本中会对其增强。 |
|
创建对象单实例还是多实例 在类上面添加注解@scope
@Component(value="user") //<bean id="" class="">
@Scope(value="prototype")
public class User {
public void add(){
System.out.println("add-----------");
}
}
二、使用注解注入属性
第一种注解(很少用):@Autowired
需求:创建service类,创建dao类,在service得到dao对象
@Component(value="userdao")
public class UserDao {
public void add(){
System.out.println("dao--------------add");
}
}
@Service(value="userservice")
public class UserService {
//得到dao对象
//1定义dao类型属性
//在dao属性上面使用注解完成对象注入 autowired代表自动装配/注入,注意这里的private UserDao userdao自动注入是根据类名注入的,和UserDao里面的注入对象没有任何关系
@Autowired
private UserDao userdao;
//使用注解方式不需要set方法
public void add(){
System.out.println("service------------add");
userdao.add();
}
}
@Test
public void testService(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService)applicationContext.getBean("userservice");
userService.add();
}
第二种注解(经常用,因为能够准确注入)@Resource:
@Service(value="userservice")
public class UserService {
//得到dao对象
//1定义dao类型属性
//2在dao属性上面使用注解完成对象注入 autowired代表自动装配
//@Autowired
//name属性值写注解创建的dao对象value值
@Resource(name="userdao")
private UserDao userdao;
//使用注解方式不需要set方法
public void add(){
System.out.println("service------------add");
userdao.add();
}
}
三、xml和注解方式混合使用
1、创建对象的操作使用配置文件方式实现;
public class BookDao {
public void book(){
System.out.println("book dao-----------");
}
}
public class OrderDao {
public void order(){
System.out.println("order dao-----------");
}
}
public class BookService {
//得到bookdao和orderdao对象
@Resource(name="bookDao")
private BookDao bookdao;
@Resource(name="orderDao")
private OrderDao orderdao;
public void add(){
System.out.println("bookservice");
bookdao.book();
orderdao.order();
}
}
配置文件
<!-- 配置对象 -->
<bean id="bookService" class="com.xmlanno.BookService"></bean>
<bean id="bookDao" class="com.xmlanno.BookDao"></bean>
<bean id="orderDao" class="com.xmlanno.OrderDao"></bean>
2、注入属性的操作使用注解实现
//得到bookdao和orderdao对象
@Resource(name="bookDao")
private BookDao bookdao;
@Resource(name="orderDao")
private OrderDao orderdao;
【Spring】的【Bean】管理(注解)【四个相同功能的注解】的更多相关文章
- Spring的bean管理(注解方式)
注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...
- (转)Spring的bean管理(注解方式)
http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...
- Spring 的Bean管理的常用注解
属性注入的注解(使用注解注入的方式,可以不用提供set方法) @Value 用于注入普通类型 @Autowired 自动装配 :默认按类型进行装配 按名称注入 @Qualifier 强制使用名称注入 ...
- Spring 的 Bean 管理(注解方式)
Spring 的 Bean 管理(注解方式) 1. 导入必要的 jar 包和 xml 文件 使用注解需要导入 spring-aop 的 jar 包. applicationContext.xml 文件 ...
- Spring之Bean管理------注解方式
编写测试类 1,编写相关的类 public interface UserDao { public void sayHello(); } public class UserDaoImpl impleme ...
- Spring学习(二)Spring的bean管理(XML)
Bean的实例化方式 1.在Spring里面通过配置文件创建对象 2.bean实例化的三种方式第一种:使用类的无参数构造函数创建(最常用的方式,第2种和第3种方法一般不用) 如果类里面没有无参的构造函 ...
- 面试阿里,字节,美团必看的Spring的Bean管理详解
IOC容器 工厂只负责创建对象,而Spring当然不仅仅是一个对象工厂,其核心是一个对象容器,其具备控制反转的能力,所以也称为IOC容器. 帮助我们存放对象,并且管理对象,包括:创建.销毁.装配,这样 ...
- Spring 的 Bean 管理(XML 方式)
Spring 的 Bean 管理(XML 方式) 1. 三种实例化 Bean 的方式 使用类构造器实例化(默认无参数) 使用静态工厂方法实例化(简单工厂模式) 使用实例工厂方法实例化(工厂方法模式) ...
- Spring Boot 2.X(十四):日志功能 Logback
Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logb ...
随机推荐
- 运维日常错误总结(docker)
一:Apache服务启动失败 报错原因:80端口被占用 分析:netstat -anp|grep 80 检查80端口的占用情况,发现是启动了nginx服务,占用了http服务 解决方式: 1:如ngi ...
- (转) windows 下ORA-12514:TNS 监听问题
在使用Orcale数据库的时候不知道各位是否遇到过如图的监听问题(或者显示类似的问题),以下方法就是来解决这样的问题的. 首先右击计算机,选择管理.选择左侧栏的服务与应用程序,右侧栏选服务. ...
- JSONP 跨域请求原理
0x00 简介 由于浏览器的同源策略,我们想要从别的域获取数据变得困难,需要特殊的技术才能获取 0x01 使用 客户域:client.com 服务器(他域):server.com 如客户想访问 : h ...
- Gym-100814K 数位DP 模拟除法
Johnny is a brilliant mathematics student. He loves mathematics since he was a child, now he is work ...
- git 合并某个分支指定的文件
$ git checkout <another-branch> <path-to-file> [<one-more-file> ...] $ git status ...
- 【洛谷P2447】外星千足虫
题目大意:给定一个 M 个含 N 个未知数的异或方程组,保证有解,若存在唯一解,给出至少需要几个方程才能得出唯一解,若不存在,直接输出不存在. 题解:异或方程组也满足类似初等行变换的操作,只不过所有的 ...
- jmeter+ant 实现自动化接口测试环境配置
前置:安装jdk 1.8以上 一.安装jemeter 下载地址:http://jmeter.apache.org/download_jmeter.cgi 1.1 解压jmeter,放在某个目录,例如D ...
- LAMP 系统性能调优之网络文件系统调优
LAMP 系统性能调优之网络文件系统调优 2011-03-21 09:35 Sean A. Walberg 网络转载 字号:T | T 使用LAMP系统的用户,都想把自己LAMP性能提高运行的速度提高 ...
- Python _easygui详细版
1. msgbox msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None) m ...
- CodeForces-916A-jamie and Alarm Snooze(笨比题目)
链接: https://vjudge.net/problem/CodeForces-916A 题意: Jamie loves sleeping. One day, he decides that he ...