singleton 注入 java_java Spring 之IOC依赖注入

内容简介

spring ioc和xml配置文件实现注入

spring 注解模式实现注入

Java使用框架都需要导入jar包,xml配置需要导入4个核心包,java核心包基本都不提供日记功能,需要导入2个额外日记包,我的spring是4.x版本.导入包如下(下载地址不在这里发了,百度下载)

spring-beans-4.3.8.RELEASE.jar

spring-context-4.3.8.RELEASE.jar

spring-core-4.3.8.RELEASE.jar

spring-expression-4.3.8.RELEASE.jar

commons-logging-1.2.jar

log4j-1.2.17.jar

bean包是标签包,core是核心包,expression应该是验证表达式包,context我估计是根据提供的路径反射生成对象的包,(我学历不够,才小学毕业自学的java,自学理解的spring ioc注入,非程序员).

spring 包导入后,需要一个xml配置表,配置表第一步是导入约束,我下面是一个完整的配置文件,比较常用的几个配置....

http://www.springframework.org/schema/beans/spring-beans.xsd">

在一一介绍 bean标签的关键词

id是一个唯一名称.命名要规范,前面不能已特殊符号开头,中间不能有空格这些特殊符号,我一般是用骆驼(UserName)命名法,不知道帕斯卡命名(user_name)行不行.

class 是需要生成的对象的全路径(cn.panda.userDao)

scope 是生成对象保存在哪里对象.总共7个属性,基本用的最多是2个,singleton 单列模式(默认),每次获取对象都是同一个对象内存地址是同一个. prototype是多列模式,每次生成都是新的对象. session. request ,globalssion,application 这几个是关于HTTP有关的对象(不是很重要,基本很少用或者不用)最后只要知道就可以了websocket.

name 属性好像是为了兼容strut1.x版本和老版本.还有可以使用一些特殊符号的名称,总体和ID关键词差不多的功能

constructor-arg是对象构造函数注入参数.是bean子节点(可以多个参数节点),里面有3个比较常用的属性,ref对应是需要注入的对象id, type 是注入变量名称如Int,java.lang.String这些, value指定的值.

property 是bean对象子节点的,里面有个name属性对应对象的属性名称,ref  需要赋值的bean 的ID值,value是指定的值...

下面是复杂的属性注入list,map,properties,set (复制官方文档了)

administrator@example.org

support@example.org

development@example.org

a list element followed by a reference

just some string

这里介绍如何静态方法和工厂方法生成对象.....先写一段代码(代码命名对于java程序员来说不是很规范,以前自学c#,所以有些命名用c#方式命名了)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 public classA{2 public voidHello(){3 system.out.println("Hello world");4 }5 }6

7

8 public classFactoryA{9

10 public staticA GetA(){11 A a=newA();12 returna;13 }14 }15

16 public classFactoryB{17 publicA GetA(){18 A a=newA();19 returna;20 }21 }

View Code

如上代码我们如何获取A的对象.bean也提供了几个关键词,我还是在代码里写注解和解释

最后一个多xml文件引入,因为一个项目不同人开发不同的模块,可以引入多个xml配置文件

spring IOC依赖注入的xml文件比较常用都写完了,下面是注解模式.注解模式需要一个引入一个核心包 spring-aop-4.3.8.RELEASE.jar

在配置文件重新编辑约束包,我只写一些比较常用的注解模式比较全建议看官方文档.都是英文版

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

可以看到此约束比xml约束多了一个xmlns:context约束和  这个就是表示开启注解模式...

base-package扫描那个包的注解,多个包可以用,分开如(cn.panda.model,cn.panda.dao)也可以用cn.panda.*表示扫描是cn.panda的包,后面所有的意思.不管你后面是啥都会扫描.

注解4个功能一样注解的. @Component(实体层),@Service(逻辑处理层),@Controller(web层),@Repository(Dao层).不知道以后spring官方会不会给他们不同的功能,现在功能都差不多.

下面用一段代码+加注解可以更好讲解比较常用的注解模式.

pakeage cn.panda.model;/*实体层代码,映射层*/@Component(value="user")/*scope("singleton") 这里可以加singelton或者prototye,反正scope的7个不写默认singelton*/

public classuser{

}

pakeage cn.panda.dao;/*数据访问层*/@Repository(value="userdao")public classuserdao(){public intadd(user user){/*代码处理逻辑代码*/}

}

pakeage cn.panda.service;

@Service(value="userservice")public classuserservice{privatecn.panda.dao.userdao userdao;/*@Autowired就是自动注入跟userdao字段一样名称对象,如果不存在userdao就会报错*/

/*@Resource(name="userdao") 就是指定注入ID的对象.*/

public voidcn.panda.dao.userdao setUserdao(cn.panda.dao.userdao userdao){this.userdao=userdao;

}public intadd(cn.panda.user user){return this.userdao.add(user);

}

}/*这里介绍@controller 这个注解,一般这个注解是用于web层.词义是控制器意思*/@controller/*ActionSuport是stucts2的一个类,我现在木有学到这里整合对象这些,以后会介绍stucts2*/

public classIndex extends ActionSuport{

}

注解还有很多,还有configuration配置.还有引入过滤一些注解.这些暂时不写了,我感觉作用不怎么大,所以木有怎么自学过.

混合模式就是xml加注解模式注入的注意事项,我也不知道正不正确验证,我也是自学的.注解中指定ID不知道跟xml配置ID不能重复.第二,xml配置ID可以指定给注解中.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值