java 遍历bean的属性里面的bean什么意思

Java类获取Spring中bean的5种方式
投稿:lijiao
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了Java类获取Spring中bean的5种方式,感兴趣的小伙伴们可以参考一下
获取Spring中的bean有很多种方式,再次总结一下:
第一种:在初始化时保存ApplicationContext对象
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring。
第二种:通过Spring提供的工具类获取ApplicationContext对象
import org.springframework.web.context.support.WebApplicationContextU
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("beanId");
ac2.getBean("beanId");
1、这两种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例;
2、第一种方式在获取失败时抛出异常,第二种方式返回null。
第三种:继承自抽象类ApplicationObjectSupport
说明:通过抽象类ApplicationObjectSupport提供的getApplicationContext()方法可以方便的获取到ApplicationContext实例,进而获取Spring容器中的bean。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。
第四种:继承自抽象类WebApplicationObjectSupport
说明:和上面方法类似,通过调用getWebApplicationContext()获取WebApplicationContext实例;
第五种:实现接口ApplicationContextAware
说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext对象。Spring初始化时,会通过该方法将ApplicationContext对象注入。
虽然Spring提供了后三种方法可以实现在普通的类中继承或实现相应的类或接口来获取Spring的ApplicationContext对象,但是在使用时一定要注意继承或实现这些抽象类或接口的普通java类一定要在Spring的配置文件(即application-context.xml文件)中进行配置,否则获取的ApplicationContext对象将为null。
下面通过实现接口ApplicationContextAware的方式演示如何获取Spring容器中的bean:
首先自定义一个实现了ApplicationContextAware接口的类,实现里面的方法:
package com.ghj.
import org.springframework.beans.BeansE
import org.springframework.context.ApplicationC
import org.springframework.context.ApplicationContextA
public class SpringConfigTool implements ApplicationContextAware {// extends ApplicationObjectSupport{
private static ApplicationContext ac =
private static SpringConfigTool springConfigTool =
public synchronized static SpringConfigTool init() {
if (springConfigTool == null) {
springConfigTool = new SpringConfigTool();
return springConfigT
public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
ac = applicationC
public synchronized static Object getBean(String beanName) {
return ac.getBean(beanName);
其次在applicationContext.xml文件进行配置:
代码如下:&bean id="SpringConfigTool" class="com.ghj.tool.SpringConfigTool"/&
最后通过如下代码就可以获取到Spring容器中相应的bean了:
代码如下:SpringConfigTool.getBean("beanId");
注意一点,在服务器启动Spring容器初始化时,不能通过以下方法获取Spring容器:
import org.springframework.web.context.ContextL
import org.springframework.web.context.WebApplicationC
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean(beanID);
以上就是本文的全部内容,希望对大家的学习有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具javaBean中属性为什么要定义成private?
大家都知道,javaBean的属性定义为pirvate,然后提供get set方法
我可以定义成public,不提供get set方法,这样也是可以的呀,为什么还要定义为private?
3Q everyOne!
1. 如果只是简单的访问字段这个功能来讲,的确如你所说。
2. 对字段的访问有时候不是简单的直接访问的,比如你可能只保存了brithday,而同时要输入age, 那么可以加个getAge(),在其中计算。
3. 也是java的封装性,于历史遗留原因,其实在新的场合,比如android中,不用get,set完全可以。如果这个对象很简单。
4. Java Bean的规则有此要求,
5. &很多用到的反映的处理它会以判断get, set方法来看是你是否想对外公开这个字段。也有只可set却不能get的情况的。这时就真的需要getter and setter
字段不能访问
然后做set, get
Java就是一门脱裤子放屁的语言
--- 共有 3 条评论 ---
javabean规范
唉,宏哥现在说话越来越没水平了, 和 中山野鬼 说话差距越来越来远了,多出去交流交流。。别天天待在家里。。再说一句,楼下兄弟说的给力。。
引用来自“宏哥”的答案
字段不能访问
然后做set, get
Java就是一门脱裤子放屁的语言
Java只是给你条裤子而已,至于你怎么穿这条裤子是你的事。怎么反而怪起裤子了?你可以穿裤子放屁,也可以脱裤子放屁,取决于你。
在者,这是不是脱裤子放屁也不是你一家之言说了算。
最后,你作为一个PHPer,你用的PHP语法里难道里没有private,没有可见性这个语法 ?黑得不够漂亮啊
class Person{
$p-&name='PHP粉';
Fatal error: Cannot access private property Person::$name in p.php on line 6
字段不能访问
然后需要做set, get要么设置成public
PHP就是一门脱裤子放屁的语言
--- 共有 3 条评论 ---
个人的看法是:
get,set方法其实是对外暴露的一个受限接口,其实就是一种约定。命名约定+引入中间层,好处还是很多的,可以对get,set方法玩AOP,基于get,set方法的反射不会破坏对象数据,IDE可以通过约定做些智能提示。一些序列化方案可以只认get,set方法做序列化,其它乱七八zhao的内部属性,哥不认。还可以玩继承,方法重载。一些框架可以基于get,set做些IOC啦,validate啦之类的。如果你自己用反射,你想做些通用处理,去遍历每个字duan,没人跟你说哪个能写,那个能读,你没法处理嘛。
多人开发中,你丢一个没有get,set的东西给七七八八的人用,谁知道哪个能写哪个不能写,。改个字duan名还不行,已经抛个没get,set的炸弹出云了,谁愿跟你改。(给个文档说明嘛)。 丢。。 get,set就是文档,早跟你说了。
--- 共有 1 条评论 ---
你说的玩AOP、IOC、反射,理解的模模糊糊的。。。
推荐找找阎宏写的《Java与模式》这本书的电子版看看。在讲模式以前有几个章节说OO的设计原则,可以很好的让你理解这些问题。
引用来自“南湖船老大”的答案
引用来自“宏哥”的答案
字段不能访问
然后做set, get
Java就是一门脱裤子放屁的语言
Java只是给你条裤子而已,至于你怎么穿这条裤子是你的事。怎么反而怪起裤子了?你可以穿裤子放屁,也可以脱裤子放屁,取决于你。
在者,这是不是脱裤子放屁也不是你一家之言说了算。
最后,你作为一个PHPer,你用的PHP语法里难道里没有private,没有可见性这个语法 ?黑得不够漂亮啊
class Person{
$p-&name='PHP粉';
Fatal error: Cannot access private property Person::$name in p.php on line 6
字段不能访问
然后需要做set, get要么设置成public
PHP就是一门脱裤子放屁的语言 你说的太好了.&
知道什么场景下更适合用public 字段而去掉getter,setter吗
--- 共有 2 条评论 ---
: android这种程序,打APK包的时候,就可以选择让代码尽可能的小
你没有理解get、set方法的意图!
如果只是简单的this.value =当然没有任何意义,明白没?
--- 共有 1 条评论 ---
”没有理解get、set方法的意图“,意图是什么?
我现在对bean基本不用private,用protected了。
1、JavaBean是组件,属性一般是不可见的,甚至是不存在的,比如datasource,但JavaBean里的属性比起private,我倾向protected。
2、通常set方法用作注入,比如structs中的action,还有datasource也是,如果不用set方法,那些不存在的属性就不好注了。
3、实体类就没必要了。全部public吧。当然,要控制权限的部分还有protected和private,完全没必要全部get、set。如果能直接访问非要绕个圈,那不是给自己找不自在。
4、要序列化,只要给serialVersionUID做get、set就好了。我见过的有用序列化的项目中100%都没必要序列化(真不凑巧)。序列化是不同版本JVM之间通信用的,数据库存储方面的json、bson、mongoDB都是替代方案,我更倾向老老实实写sql。
5、那些把实体类当作bean,动不动就private-get-set,实际上从没动手写过组件的程序员都是(LZ自行脑补)。
--- 共有 5 条评论 ---
: 不要紧的,类名(包括路径)不一样就没关系。1L应该就是版本1的意思吧。同一个类修改之后要改一下,比如2L。
: private static final long serialVersionUID = 1L; 我看到好多bean把UID设置为1L,它们之间不会冲突吗?
: 我说错了,不用重新生成UID,serialVersionUID维护的是这个类的版本号。所以在更新一个类时,版本号也要改。但在这里无所谓,因为在编程阶段类还没有被序列化过,版本号用什么都无所谓。
”因为类一变就得重新生成UID了 “,为什么要重新生成UID?即使是两个类的UID一样,又有什么问题呢?
我说错了,serialVersionUID是不能get、set的,因为类一变就得重新生成UID了普通java类获取 spring中的bean方法-爱编程
普通java类获取 spring中的bean方法
编写一个工具类
&实现spring 的ApplicationContextAware接口
代码如下:
package com.evideostb.billsystem.
import org.springframework.context.ApplicationC
import org.springframework.context.ApplicationContextA
import org.springframework.context.support.ClassPathXmlApplicationC
* 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.
* @author zhangchuanzhao
上午11:04:46
public class SpringContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationC
* 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextHolder.applicationContext = applicationC // NOSONAR
* 取得存储在静态变量中的ApplicationContext.
public static ApplicationContext getApplicationContext() {
checkApplicationContext();
return applicationC
* 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
@SuppressWarnings("unchecked")
public static &T& T getBean(String name) {
checkApplicationContext();
return (T) applicationContext.getBean(name);
* 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
@SuppressWarnings("unchecked")
public static &T& T getBean(Class&T& clazz) {
checkApplicationContext();
return (T) applicationContext.getBeansOfType(clazz);
* 清除applicationContext静态变量.
public static void cleanApplicationContext() {
applicationContext =
@SuppressWarnings("resource")
private static void checkApplicationContext() {
new ClassPathXmlApplicationContext("SpringMVC-servlet.xml");
if (applicationContext == null) {
throw new IllegalStateException(
"applicationContext未注入,请在applicationContext.xml中定义SpringContextHolder");
然后需要在application中把把org.springframework.context.ApplicationContext作为属性注入给类
其实只需要这样写就可以如下:
&bean class="com.evideostb.billsystem.utils.SpringContextHolder" lazy-init="false" /&
这样子就是被注入进去了
运行的时候只需要加载你的applicationContext.xml
*普通java类main方法这样调用
new ClassPathXmlApplicationContext("applicationContext.xml");
CommonService commonService = (CommonService) SpringContextHolder.getBean("commonService");
*web工程直接调用
CommonService commonService = (CommonService) SpringContextHolder.getBean("commonService");
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。门外萌新,请问这个java bean是什么东西,get和set方法又是干什_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:613,292贴子:
门外萌新,请问这个java bean是什么东西,get和set方法又是干什收藏
package com.Exam.public class Question {// 试题的id// 套题类型的id private String q_// 试题题目 private String q_// 问题答案 private String optionA; private String optionB; private String optionC; private String optionD; private S// 备注public int getId() {}public void setId(int id) {this.id =}public String getNote() {}public void setNote(String note) {this.note =}public String getOptionA() {return optionA;}public void setOptionA(String optionA) {this.optionA = optionA;}public String getOptionB() {return optionB;}public void setOptionB(String optionB) {this.optionB = optionB;}public String getOptionC() {return optionC;}public void setOptionC(String optionC) {this.optionC = optionC;}public String getOptionD() {return optionD;}public void setOptionD(String optionD) {this.optionD = optionD;}public String getQ_answer() {return q_}public void setQ_answer(String q_answer) {this.q_answer = q_}public String getQ_subject() {return q_}public void setQ_subject(String q_subject) {this.q_subject = q_}public int getTypeid() {}public void setTypeid(int typeid) {this.typeid =} }
兄弟连java教程按月升级迭代,贴合企业java需求,权威师资,java时代力造经典!
考试系统,书上说封装数据表什么的
好像主要就四句话,请问这四句话是干什么的
果然这吧里只有广告?
后期做项目都会用到bean
就是好调用
(getxx) 存取(set xx)
这个ios格式和gbk格式都是什么东西
一个java类都是一个javabean!类里面有属性,get,set方法是封装!
Javabean不是什么时候都适合用
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 javabean的作用 的文章

 

随机推荐