spring的IOC注解

1、创建对象的注解
含义:使用注解的形式创建对象,交给Spring容器管理(需要配置在类上)
@Component:组件
@Controller:web层
@Service:service层
@Repository:Dao层
   默认:创建对象的唯一标识,当前类名首字母小写
   value属性:指定创建对象的唯一标识
举例:
//1、使用@Component创建对象,唯一标识为:account。以下两种任选其一,其中value可以指定唯一标识。
//@Component
@Component(value="account")
public class Account{}
//2、使用@Controller创建对象,唯一标识为:account。以下两种任选其一,其中value可以指定唯一标识。
//@Controller
@Controller(value="account")
public class Account{}
//3、使用@Service创建对象,唯一标识为:accountServiceImpl。以下两种任选其一,其中value可以指定唯一标识。
//@Service
@Service(value="accountServiceImpl")
public class AccountServiceImpl{}
//4、使用@Repository创建对象,唯一标识为:accountDaoImpl。以下两种任选其一,其中value可以指定唯一标识。
//@Repository
@Repository(value="accountDaoImpl")
public class AccountDaoImpl{}

2、依赖注入的注解(可以理解为注入类中的属性)
@AutoWired:
   默认:
    1、按照类型(接口)从容器中查找对象,并注入。
    2、按照属性名作为唯一标识从容器中查找对象,并注入。
举例:
public class AccountDaoImpl{
    @AutoWired
    private QueryRunner qr;
}
@Qulifier:配合@AutoWired一起使用配置到属性上
    按照指定的唯一标识从容器中查找对象,并注入
    value:唯一标识
举例:
public class AccountDaoImpl{
    @AutoWired
    @Qualifier(value="queryRunner2")
    private QueryRunner qr;
}
@Resource:JDK提供的依赖注入的注解(按照指定唯一标识从容器中查找对象,并注入)
    name属性:唯一标识
举例:
public class AccountDaoImpl{
    @Resource(name="queryRunner")
    private QueryRunner qr;
}
注意:1、@Resource是JDK提供的注解,且并不是所有的JDK版本都支持
      2、@Resource可以完全取代@AutoWired+@Qulifier
@Value:注入被Spring管理的properties文件中的内容
使用properties之前需要在bean.xml中解析
<!-- 解析properties文件 -->
<bean id="propertySource" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <!-- set方式注入properties文件的路径
        location:注入单个properties路径
        locations:注入多个properties路径
    -->
    <!-- <properties name="location" classpath="jdbc.properties"></properties> -->
    <property name="locations">
        <array>
            <value>classpath:jdbc.properties</value>
        </array>
    </property>
</bean>

3、声明周期相关的注解
@Scope:指定创建对象的作用域(作用范围)
   value:singleton:默认,单例 || prototype:多例
@PostConstruct:指定初始化方法(对象创建之后立即执行的方法)
@PreDestory:指定销毁方法(仅单例对象有效),容器关闭,对象销毁执行的方法
举例
//默认的,可以的不写
@Repository(value="accountDao")
@Scope("singleton")
public class AccountDao{

    @PostConstruct
    public void init(){
        System.out.println("创建对象之后执行的方法");
    }

    @PreDestory
    public void destory(){
        System.out.println("销毁之前执行的方法");
    }
}

4、纯注解编程
目的:替换xml配置文件
实现:需要将spring的配置信息,配置到类:配置类
@Configruation:声明配置类
@ComponentScan:指定包扫描
    basePackage:包名
@PropertySource:将properties配置文件交给speing容器管理
    value:接受String类型数据(配置多个文件)
举例:
//1、声明配置类
//2、开启包扫描
//3、将propertirs文件交给spring容器管理
@Configuration
@ComponentScan(basePackage="cn.wzq")
@PropertySource(value="classpath:jdbc.properties")
public class SpringConfig{}

@Bean:配置到方法上,表明此方法的返回值交给sring容器管理
举例:
pubic class JdbcConfig{
    @Bean(name="dataSource")
    public DataSource getDataSource(){
        ComboPooledDataSource ds=new ComboPooledDataSource();
        ds.setUser("root");
        ds.setPassword("root");
        ds.setJdbcUel("jdbc:mysql:///speingdb");
        ds.setDriverClass("com.mysql.jdbc.Driver");
        return ds;
    }

    @Bean(name="queryRunner")
    public QueryRunner getQueryRunner(DataSource dataSource){
        QueryRunner qr=new QueryRunner(dataSource);
        return qr;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerDesigner 逆向工程 从SQL文件转换成PDM 从PDM转成CDM

从SQL文件逆向工程到PDM&#xff1a; ①选择file -> Reverse Engineer - > Database ②在General选项卡中选择MySQL数据库&#xff0c;点击确定。 ③using script file 选择你的sql文件&#xff0c;最后选择确定。 从PDM转成CDM&#xff1a; ①选择工具 -> General CD…

SpringMvc的执行过程

Tomcat启动 1、部署项目到Tomcat中 2、启动Tomcat加载Web.xml 3、初始化DispatcherServlet(执行的是init方法) 4、加载配置文件&#xff0c;创建对象交给Spring容器管理 5、通过处理器映射器解析RequestMappin配置&#xff0c;配置‘请求地址’和‘控制器类’的映射关系 小结&a…

自然语言理解——introduction

1.基本概念&#xff1a; NLP&#xff1a;自然语言处理是研究如何利用计算机技术对语言文本&#xff08;句子、篇章或话语等&#xff09;进行处理和加工的一门学科&#xff0c;研究内容包括对词法、句法、语义和语用等信息的识别、分类、提取、转换和生成等各种处理方法和实现技…

Eclipse中弹出OLE Exception窗口

楼主事故原因&#xff1a;首先打开一个类&#xff0c;然后因为手速太快&#xff0c;在该类的编辑窗口中右键&#xff0c;单击&#xff0c;不要问我点了啥&#xff0c;我也不知。后面发现该类的编辑器没有显示任何内容&#xff0c;但是可以发现代码依然存在只是没有显示。 关闭…

HDOJ-3790-最短路径问题 解题报告

一道最短路问题。普通最短路问题的边只有一种权值&#xff0c;而此题的边要考虑两种权值。因为节点n<1000&#xff0c;所以不能够使用Floyd算法&#xff0c;时间复杂度较高&#xff0c;这里使用Dijkstra算法解决。 中文描述&#xff0c;题意不再赘述。只是要注意每条边都有距…

利用自定命令打开常用软件,小白秒变大神。

不多说&#xff0c;先来个效果&#xff0c;WIINR打开运行&#xff0c;输入qq(小编自定的命令)&#xff0c;就能打开。 实现步骤&#xff1a; 1、找到快捷方式(以腾讯QQ为例) 2、将腾讯QQ快捷方式复制粘贴到C:\Windows,并修改名称 3、测试&#xff0c;winr代开运行&#xff0c;…

问题之JS中传递数值过大或前置有零时

1、JS中传递数值多大数值会变 var number 00161213313254545433 turnToDetail(number); function turnToDetail(queryNumber){ queryNumber ! 00161213313254545433(true) } 应将数值转换为字符串 var number 00161213313254545433 turn…

rpm的用法 详解

Linux rpm 命令参数使用详解&#xff3b;介绍和应用&#xff3d; RPM是RedHat Package Manager&#xff08;RedHat软件包管理工具&#xff09;类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包&#xff08;Binary&#xff09;以及源代码包&#xff08;Source&#x…

Android与Libgdx环境配置

此处所说的是基于windows和android版本的libgdx环境配置。 1. 下载所需软件 JDK 1.7。 下载地址&#xff1a; window x86版本地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html Android SDK。 在android官网上下载最新版…

问题之sqlyou的使用

当数据过大时一定要注意sqlyou每页只能显示1000条数据

问题之mybatis-plus中的TableField、Tableld的区别

Tableld&#xff1a;属性与主键的映射关系。 TableField:列与属性的映射关系。

浅蓝色设计类网站模板

浅蓝色设计类网站模板是一款高端大气的设计css3企业网站模板。 模板地址&#xff1a;http://www.huiyi8.com/sc/8673.html 转载于:https://www.cnblogs.com/xkzy/p/3765371.html

html5中的一些标签学习总结

html5 contenteditable"true" html5内容可编辑属性 html5 hgroup hgroup字面意思是头部的组&#xff0c;可以将其分拆为h和group来理解。在html5中的作用是用于对网页和区块的标题进行组合。&#xff08;网页是一个最大的区块&#xff0c;所以可以认为hgroup是区块的…

总结1:Ajax上传图片至阿里云服务器

1.页面效果以及JS <!-- HTML --> <div style"margin:30px;"><div class"form-horizontal rowt"><div class"control-label col-lg-1">标书分类</div><div class"col-lg-2"><select required&q…

Leetcode::Subsets

Given a set of distinct integers, S, return all possible subsets. 分析&#xff1a;题目就是给一个整数集合&#xff0c;给出所以的子集。 基本思想是递归或者说是迭代的方法。用前面得到的集合来构造 后面的。但是怎样高效、方便的构造集合是关键点。比如&#xff0c;开始…

总结2:上传图片至指定服务器

1.前段页面以及JS <!-- HTML --> <section class"content"><div class"row"><div class"col-xs-12"><div class"box box-success"><div class"row" style"margin-top: 1%;margin-bu…

苹果新的编程语言 Swift 语言进阶(一)--综述

Swift 是苹果开发和提供的供开发IOS 和OS X应用的一门新的语言。Swift语言基于C 和Objective-C语言&#xff0c;除了提供C 和Objective-C语言具有的所有语法功能外&#xff0c;为了编程方便和高效&#xff0c;Swift在语法上作了大量的优化和改进。 Swift采用安全编程模式&#…

总结3:IDEA中使用${pageContext.request.contextPath}填写路径时出错

问题描述&#xff1a; 之前一个项目在eclipse中开发的&#xff0c;其中有使用到 <jsp:include page"${pageContext.request.contextPath}/../head.jsp"/>启动项目成功&#xff0c;访问出错。在换到IDEA中启动项目时提示路径出错&#xff0c;当把路径修改为 …

操作12864(ST7920控制器)

引脚部分查看中文的12864介绍&#xff0c;下面这些可以在ST7920的英文数据手册里查到。 Function Description 部分介绍工作方式、存储器、操作方法。Instructions 部分介绍指令。按照并行或串行的 Timing Diagram 来操作&#xff0c;注意数据何时有效。查看初始化的流程图&…

问题之传递参数名和接收参数名要一致。

前端传递发送的Ajax请求&#xff0c;请求参数为data data: {organizationId:$("#organId").val()},//data.field 后端接受参数 //错误接受参数 RequestMapping(value "") ResponseBody public Object findAll(Integer organId) { return…