Spring 讲解(四)
Spring 中使用注解注入
注解:就是一个类,使用
@注解名称。实际开发中:使用注解取代 xml 配置文件。
1、常用注解释义
@component
取代 <bean class="">
@Component("id")
取代 <bean id="" class="">
web开发,提供3个 @Component 注解衍生注解取代
@Repository(“名称”):dao层
@Service(“名称”):service层
@Controller(“名称”):web层
web 开发中其他常用注解
@Autowired:自动根据类型注入
@Qualifier(“名称”):指定自动注入的id名称
@Resource(“名称”)
@ PostConstruct 自定义初始化
@ PreDestroy 自定义销毁
2、案例代码演示
接口和实现类
public interface UserService {
void add(User user);
}
=========================================================================================
@Component
public class UserServiceImpl implements UserService {
@Override
public void add(User user) {
System.out.println("添加用户信息..."+user);
}
}
配置 bean.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">
<!-- 开启注解-->
<context:annotation-config/>
<!-- 注解的位置-->
<context:component-scan base-package="com.example.demo"/>
</beans>
测试函数
public class ServiceTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = context.getBean(UserServiceImpl.class);
User user = new User();
user.setUsername("元始天尊");
user.setAge(999);
user.setPassword("555");
userService.add(user);
}
}
控制台日志信息如下:
添加用户信息...User{username='元始天尊', password='555', age=999}
3、重点:注解是如何取代 xml 中 bean 的配置
a、在类中声明@Component 相当于配置了 :
<bean class="com.example.demo.service.impl.UserServiceImpl"></bean>
b、Spring默认情况下注解不生效,需要开启注解功能 :
<!-- 开启注解-->
<context:annotation-config/> <!-- 注解的位置-->
<context:component-scan base-package="com.example.demo"/>
c、使用注解时 需注意 bean.xml 配置了以下约束,否则不会生效:
!
4、还可以使用以下配置
@Component("userService")
public class UserServiceImpl implements UserService {
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public void add() {
System.out.println("创建用户...." + name);
}
@Override
public void add(User user) {
System.out.println("添加用户信息..."+user);
}
}
public class ServiceTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = (UserService)context.getBean("userService");
User user = new User();
user.setUsername("元始天尊");
user.setAge(999);
user.setPassword("555");
userService.add(user);
}
}
2 种运行的结果都是一样的。
@Component("userService") 就是加上了 id ,就相当于在 Spring 容器中注入的时候有了唯一的 id 号码,所以在获取的时候可以通过 id 获取,即
UserService userService = (UserService)context.getBean("userService");。
Spring 讲解(四)的更多相关文章
- Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!
- Spring系列(四) 面向切面的Spring
除了IOC外, AOP是Spring的另一个核心. Spring利用AOP解决应用横切关注点(cross-cutting concern)与业务逻辑的分离, 目的是解耦合. 横切关注点是指散布于代码多 ...
- Spring Boot(四) Mybatis-MySql
Spring Boot(四) Mybatis-MySql 0.准备数据库表 -- ---------------------------- -- Table structure for person ...
- 阶段3 2.Spring_01.Spring框架简介_01.spring课程四天安排
spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...
- spring security四种实现方式
spring security四种实现方式 spring(20) > 目录(?)[+] 最简单配置spring-securityxml实现1 实现UserDetailsService 实现动态过 ...
- 学习spring第四天
Spring第四天讲义 今日内容 Spring的事务管理 Spring和MyBatis框架的集成 1. Spring的事务管理 1.1. 事务是什么? 在操作数据库时(增删改),如果同时操作多次数据, ...
- Spring AOP四种实现方式Demo详解与相关知识探究
一.前言 在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版.代码格式有强迫症的人来说,实在是不能忍受~~~~(>_<)~~~~ ...
- spring学习(四) ———— 整合web项目(SSH)
清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...
- 【Spring】12、Spring Security 四种使用方式
spring security使用分类: 如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1.不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo: ...
随机推荐
- springmvc中拦截器配置格式
对于springmvc,有两种方式配置拦截器. 一是实现HandlerInterceptor接口,如 public class MyInterceptor1 implements HandlerInt ...
- Webpack 4 和单页应用入门
引言 本文转自https://github.com/wallstreetcn/webpack-and-spa-guide,为了方便阅读转到博客园. webpack 更新到了 4.0,官网还没有更新文档 ...
- Maven开始
1:加入Maven插件: 这句话的意思是: 从本地仓库找到相应的jar包 <localRepository>F:\RepMaven</localRepository 2:创建一个Ma ...
- 组合的输出(回溯、dfs)
问题 O: [回溯法]组合的输出 题目描述 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r ...
- Vue-随笔小记
注:本文属个人随笔记录,如有错误请大家多多指正 1.vue.nextTick([callback,context]) 参数: {function}[context] {Object}[context] ...
- Centos7 安装配置Apache+Mysql5.7+PHP7.0+phpmyadmin
Centos7 下安装配置Apache+Mysql5.7+PHP7.0+phpmyadmin 搭建LAMP =========================================Apach ...
- JS中基本数据类型和引用类型最根本的区别
栈内存和堆内存:https://segmentfault.com/a/1190000015118062 https://segmentfault.com/a/1190000016389376 变量:内 ...
- 异步请求jquery
//校验资费名是否重复 function check_name(){ var name=$("#name").val(); //校验资费名是否为空 if(name=="& ...
- Ubuntu18.10下出现Could not get lock /var/lib/dpkg/lock的错误
最近在Windows10系统下使用Oracle VM VirtualBox6.0.2下安装的Ubuntu18.10时,运用sudo apt-get install 安装pkg-config工具,在终 ...
- flink-training-course
目录 flink-training-course 大数据领域顶级盛会 Flink Forward Asia 2019 详情
