前言:

做了2年的软件,刚开始入行的时候,没有个目标基本上都是在摸索,技术看的我眼花缭乱,这个想学,那个也想学结果是对很多技术一知半解的,工作中才发现,我们要掌握的一门可以搞定快速开发搞定所有业务需求的技术, 所以现在我要对spring的东西达到一个深层次的掌握,尽量避免百度,在开发中避免查询查询api提高开发速度,在前端方面我觉得知道掌握jquery,easyui相关的技术即可,在前端方面不追求广度,只追求技术的深度

spring依赖注入

spring的依赖注入指的是应用程序本身不负责对象的创建和维护,应用程序所需要的类在应用加载启动的时候创建完成,并通过set方法将类直接加载到应用程序中(DI),在spring容器中并设置类的一系类属性,例如的类的作用域,bean与bean之间的关系,类的模式,在spring容器中检测,类的生命周期等

现在spring使用方式有基于注解和基于xml的2中方式:
先介绍注解的方式:
实例化的注解列表:
@compoent :应用于普通的类中
@service:在servie层中使用
@controller:标记controller层
@reposistory:在dao层中使用
@resource:根据设置的明朝名称来进行注入

注入的注解的标签:
@autowired:自动注入的方式进行注入,默认根据类的名称来进行装配
@Resource(name="")没有name时3和autowired一样但是他可以根据名称进行装配

装配标签:在xml里面的
<context:compoent-scan pack-name="">

设置类装配的范围:

@Scope()

使用实例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><mvc:annotation-driven /> <!-- 扫描controller(controller层注入) --><!-- 当类上面有 @Compoent, @service, @Controller,@repository 也可以定义为 1 <context:component-scan base-package="cn.gacl.dao.impl,cn.gacl.service.impl,cn.gacl.action"/>@Component是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。@Controller@Controller对应表现层的Bean,也就是Action@Scope("prototype") 用于生命bean的范围--><!-- 开始扫 @Compoent, @service, @Controller,@repository 并 相关的标签 将这些类实例化相当于在 <bean id="" class=""></bean>--><context:component-scan base-package="com.mvc" /><!-- springMVC上传文件时,需要配置MultipartResolver处理器 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="utf-8"></property><property name="maxUploadSize" value="10485760000"></property><property name="maxInMemorySize" value="40960"></property></bean><!-- 对模型视图添加前后缀 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/" p:suffix=".jsp"/></beans>

在文件加载文件的使用将类自动注入

controller层样例:

package com.mvc.controller;import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import com.fileupload.dao.ContextDao;
import com.fileupload.dao.impl.ContextDaoImpl;
import com.mvc.model.OAArchiveCjRTypeArchives;
import com.mvc.model.OAArchiveCjRTypeFile;
import com.mvc.model.OArchiveCjRtypeProject;
import com.mvc.model.User;
import com.mvc.service.UserService;@Controller
@Scope
public class UserController {private static Logger logger = Logger.getLogger(UserController.class); @Autowiredprivate UserService service;private List list;private Map map;List<User> user;@RequestMapping("/")    public ModelAndView getIndex(){     // 记录debug级别的信息    logger.debug("This is debug message.");    // 记录info级别的信息    logger.info("This is info message.");    // 记录error级别的信息    logger.error("This is error message.");   ModelAndView mav = new ModelAndView("index");   return mav;    }   @RequestMapping(value = "/mvctest", method = RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public Map<String,Object> mvctest(@RequestParam("name") String name){logger.info(name);List<String> list = new ArrayList<String>();list.add("tomcat");list.add("eclipse");Map<String,Object> map = new HashMap<String,Object>();map.put("list", list);return map;}@RequestMapping(value="/listUser", method=RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public List<User> listUser(){List<User> list = service.listUser();return list;}/*   @RequestMapping(value="/listTest", method=RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public List listTest(){List list = this.list;return list;}*//** 包装类型的数据,在传参数的时候不会报错报0 int和integer* */@RequestMapping(value="/integerTest", method=RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public Integer IntegerTest(@RequestParam("num")Integer num){return num;}//传数组@RequestMapping(value="/arrayTest", method=RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public String arrayTest(@RequestParam("name")String[] name){StringBuffer buf = new StringBuffer();for(String nameVal:name){buf.append(nameVal).append("   ");}return buf.toString();}//http://localhost:8080/mvctest/objectTest?userName=jiang&userTel=123456@RequestMapping(value="/objectTest", method=RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public String objectTest(OArchiveCjRtypeProject rp){return rp.toString();}//@RequestMapping(value="/listTest", method=RequestMethod.GET,produces = "application/json;charset=UTF-8")@ResponseBody()public String listTest(List<User> user){return user.toString();}//modelAndView test@RequestMapping(value="/viewTest", method=RequestMethod.GET)public ModelAndView viewTest(){ModelAndView model = new ModelAndView("index");model.addObject("name", "jiang");model.getModel().put("age","1112");return model;}@InitBinder("user")public void userBind( WebDataBinder bind){bind.setFieldDefaultPrefix("user.");};@InitBinder("admin")public void adminBind( WebDataBinder bind){bind.setFieldDefaultPrefix("admin.");};public List getList() {return list;}public void setList(List list) {this.list = list;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}public List<User> getUser() {return user;}public void setUser(List<User> user) {this.user = user;}}

service层和到dao层类似于此

科学上网教程:

http://javastudy.mynatapp.cc/jeesite/f/wechat/interLine/view

相关相关教程可以查看博客中的其他博客

spring的依赖注入 -------基于注解方式相关推荐

  1. Spring依赖注入(注解方式)

    Spring依赖注入(注解方式) 在Spring中,尽管使用XML配置文件就可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给程序的维护与升级带来一定的困 ...

  2. Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理

        注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果. 手工装配依赖对象  手工装配依赖对象,在这种方式中又有两种编 ...

  3. spring的依赖注入方式

    spring的依赖注入两种方式:Setter-based Dependency Injection(set方法去注入) 和 Constructor-based Dependency Injection ...

  4. Spring自动装配(基于注解)

    从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译.类加载和运行时被读取,执行相应的处理.开发人员可以通过注解在不改变原有代码和逻辑的情 ...

  5. java中四种注入注解,Spring中依赖注入的四种方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...

  6. Spring bean依赖注入、bean的装配及相关注解

    依赖注入 Spring主要提供以下两种方法用于依赖注入 基于属性Setter方法注入 基于构造方法注入 Setter方法注入 例子: public class Communication {priva ...

  7. spring IOC容器 Bean 管理——基于注解方式

    IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) ​ (2)使用注解,注解作用在类上面,方法上面, ...

  8. Spring实现依赖注入的几种方式

    Spring实现依赖注入的几种方式 1.基于有参构造实现 <bean id="user" class="com.ccu.twj"><const ...

  9. 【Spring】依赖注入的几种方式

    在上篇文章中我着重介绍了Spring的控制反转和依赖注入的概念,那么依赖注入有那几种方式呢?他们的优缺点分别是什么,我将在本章中详细讲解. Spring的依赖注入根据对象类型注入可以分为属性注入和对象 ...

最新文章

  1. 9月16号晚上,Asuka有一场关于Windows 7组策略的Webcast,欢迎兄弟们来捧场
  2. 543. 二叉树的直径 golang
  3. C++开源矩阵计算工具——Eigen 在VS2005中的下载、配置与使用
  4. android 自定义课程表,Android课程表界面布局实现代码
  5. 2.2-特殊权限之sticky
  6. Java基本类型占用字节数(或 bit数)
  7. Java毕业设计(项目课程)大全
  8. JS 拖拽对齐参考线+自动吸附+对齐到网格
  9. 用74ls90组成二十四进制计数器_减法计数器的组成以及原理
  10. android 设备最大像素,最高2100万像素镜头 拍照强悍手机盘点
  11. 【山外笔记-计算机网络·第7版】第13章:计算机网络名词缩写汇总
  12. Witt向量简介 摘要与目录跳转
  13. 【ARC 自动引用计数 Objective-C语言】
  14. 用户画像体系与构建方法概述
  15. Atitit 互联网之道 1.1. 互联网 1 2. 互联网经历了三个时代,门户时代、搜索/社交时代、大互联网时代 1 2.1. Web2.0.搜索/社交时代(Web 2.0) 2 2.2. Web
  16. 微信好友互删服务器还会有记录吗,微信好友互删后还能恢复吗?一招轻松搞定...
  17. 曾轶可的音乐市场有多大?
  18. AD(十五)3D模型的创建和导入
  19. matlab不能盗版吗,matlab为了防止盗版,会不会篡改程序运行结果?这是明证
  20. 爬虫界的扫地僧?一文带你了解Puppeteer的前世今生

热门文章

  1. 【CC2640】CC2640架构及原理
  2. 用微积分证明泰勒公式
  3. mysql扣减库存_扣库存之mysql方案讨论
  4. 最小割问题-Karger‘s algorithm
  5. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
  6. Excel表格密码保护的解除方法
  7. matlab体素化,一种三维激光点云数据快速体素化处理方法与流程
  8. 【游戏开发实战】Unity快速搭建体素风格关卡地图(Tile3D | 我的世界 | Voxel | 场景 | 编辑器)
  9. 【读书推荐】中国是部金融史
  10. c语言程序课程设计题目