【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 ...
随机推荐
- 【转载】平时的你VS面试的你
https://www.cnblogs.com/rjzheng/p/10275453.html 引言 大家在面试的时候,特别是最后一面HR面,是不是经常都说自己咳咳咳.博主特意总结了一下平时的你和面试 ...
- 安装与学习laravel
安装 composer cd /var/www/html curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/ ...
- 从标准输入读取一行数组并保存(用的是字符串分割函数strtok_s() )
首先介绍字符串分割函数: char *strtok_s( char *strToken, //字符串包含一个标记或一个以上的标记. const char *strDelimit, //分隔符的设置 c ...
- Linux下网络设置
1.临时IP配置 # ifconfig eth0 192.168.110.118 netmask 255.255.255.0 gateway 192.168.110.2 up # ...
- 索引介绍,转载自:https://tech.meituan.com/2014/06/30/mysql-index.html
索引原理 除了词典,生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总 ...
- 用Maven搭建简单的SpringMVC框架
本文会详细阐述如何用Maven搭建一个简单的SpringMVC框架 这里就不介绍SpringMVC框架了,咱们直接来搭建 第一步 创建一个Maven的web项目 这里有一个简单的方法 new一个Ma ...
- 跨域 (1) jsonp 跨域
jsonp 的例子 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- ip addr详解
Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. ip addr : lo: <LOOPBACK, ...
- 【leetcode&CN&竞赛】1196.How Many Apples Can You Put into the Basket
题目如下: 楼下水果店正在促销,你打算买些苹果,arr[i] 表示第 i 个苹果的单位重量. 你有一个购物袋,最多可以装 5000 单位重量的东西,算一算,最多可以往购物袋里装入多少苹果. 示例 1: ...
- 箱排序(Bin Sort)
1.基本思想 排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n). 箱排序也称桶排序(Bucket Sor ...