加载中

或许我些许明白了一点用他的意义,第一次请求过来后放到该变量中,在整个request处理过程中不用总是冲map获取action实例然后从方法上面获取注解判断,而仅仅是绑定到ThreadsLocal这个变量里面了,因为在handleException也用到了。但我还是不明白用这个到底出于什么情况考虑的,能做个假设么,红薯大哥?

@mrvoce
ThreadLocal<Boolean> jsonEnable = new ThreadLocal<Boolean...
但是仅仅只是对Json的支持与否,取json是否支持是从Map里面的Action实例的方法的注解上面获取的,跟Request好像没关系哦。还望解释下。
@mrvoce
ThreadLocal<Boolean> jsonEnable = new ThreadLocal<Boolean...
呵呵你好,已经通过参数屏蔽了测试配置,谢谢。
@mrvoce
下图是jprofiler的JEE&Probes中的JDBC监控到的,很多这个SHOW FULL TABLES FR...
可以屏蔽么,这个我也这么猜测是测试校正字符集等操作的。如果这么操作性能和时间都耗费到这几条上面呢。
@mrvoce
下图是jprofiler的JEE&Probes中的JDBC监控到的,很多这个SHOW FULL TABLES FR...
不加最后 f1.set(b, a);也可以,因为当前范围属于值引用范围,未断开。所以引用有效。
@mrvoce
AbstractBeanFactory这个类的doGetBean是进行bean依赖的注入并返回填充好的bean实例...

问题想清楚了。下面是分析

class A{
	B b;
}

class B{
	
	A a;
}

class FactoryBean{
	
	Map<String, Object> beanMap = new HashMap<String, Object>();
	public Object getBean(){
		A a = new A();
		B b = new B();
		try {

		Field f1 = b.getClass().getDeclaredField("a");
		f1.setAccessible(true);
		f1.set(b, a);
		
		Field f = a.getClass().getDeclaredField("b");
		f.setAccessible(true);
		f.set(a,b);
			
		f1.set(b, a);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return a;
	}
}
	
public class Test1 {
	public static void main(String[] args) {
		A a = (A)new FactoryBean().getBean();
		System.out.println("-------");
		System.out.println(a.b);
		System.out.println(a.b.a+"="+a);
	}
}

在反射设置属性时这里是模仿spring的构建bean的情况,A经过初始化后spring检查下面是否有引用如果有引用则进行预先初始化A中的引用依赖,就是B b = new B();但是B需要a的实例,所以直接将A a=new A();中的a设置进去,当然这里的a经过实例化后成员变量a.b是null,然后再设置a中应用的b,此时B中的a是不完整的,然而最后一句f1.set(b, a);再补充设置b中的a,就完整了。运行结果如下:

System.out.println("-------");

System.out.println(a.b+"="+a.b.a.b);

System.out.println(a.b.a+"="+a);

-------

-------

com.ins.base.test.B@ca0b6=com.ins.base.test.B@ca0b6

com.ins.base.test.A@10b30a7=com.ins.base.test.A@10b30a7

说明引用是完整的,不知道这样理解和分析是否正确,请确认下咯。

 

@mrvoce
AbstractBeanFactory这个类的doGetBean是进行bean依赖的注入并返回填充好的bean实例...

class A{
	B b = new B();
	public void test1(){
		System.out.println("test1");
		b.method1();
	}
 }

class B{

//	A a = new A();//如果解开这里就会出现java.lang.StackOverflowError说明是循环依赖(不允许)
	public void method1(){
		System.out.println("method1");
	}
}
	
public class Test1 {
	public static void main(String[] args) {
		A a = new A();
		a.test1();
	}

}

上面写了例子,但是循环依赖不允许为什么我还是可以看到Spring service层的类进行相互调用,他是怎么屏蔽的呢?Spring高手能否解释下呢。

 

 

@mrvoce
AbstractBeanFactory这个类的doGetBean是进行bean依赖的注入并返回填充好的bean实例...
Spring高人,在哪里?求教啦。。。。。
@mrvoce
AbstractBeanFactory这个类的doGetBean是进行bean依赖的注入并返回填充好的bean实例...
如果都不是完整对象那么A、B相互之间方法调用的时候,那岂不是都悲剧了?
@mrvoce
AbstractBeanFactory这个类的doGetBean是进行bean依赖的注入并返回填充好的bean实例...
B无法正常创建,因为B有A的对象实例。你这个思路是很普遍的思路了。我就特别想问那个A有B的引用,B有A的引用如何将完整的A、B实例注入到双方里面。还是感谢你的讨论。
@mrvoce
AbstractBeanFactory这个类的doGetBean是进行bean依赖的注入并返回填充好的bean实例...
竞拍网站我之前做过那种最低唯一模式的,不是现在用钱去顶时间,那时候特别郁闷的是最低唯一要保证最低价格由是不被覆盖的,那么加锁在数据库上进行操作服务器好可以顶1000-2000人同时出价(2Tomcat和1Apache)没考虑缓存,但是发现读的时候压力特别的大,写操作如果缓存可靠可以全部放缓存中然后每轮完成后持久化到数据库。关键是要有一个锁,每次进入就要排队经过这个锁。考虑下吧。
@迷路的游侠
最近公司要我做一个网上拍卖的程序,无奈实在没有相关方面的经验。 所以想OSC上问问有相关经验的朋友,做这个东西的时...

下面一段话惊醒了我:

注: 转向方式: 如struts-config文件中配置<forward name="success" path="/WEB-INF/main.jsp" />    
                 或 在Action中写request.getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);
                都是服务器读取了该页面内容,并发送到客户端.客户端的地址不变.内容跳转了

    重定向方式: 如struts-config文件中配置<forward name="success" path="/WEB-INF/main.jsp"

                    redirect="true"/> 或在action中response.sendRedirect("/error.jsp");

                    重定向的含义就是服务器把地址发给客户端,让客户端去访问.这种办法显然针对WEB-INF目录是无用功.


不过我还是想问问Struts里面也有重定向到jsp的说法,这个是什么情况,照上面的说法这样的方式是不可行的。

@mrvoce
Struts、spring mvc直接配置视图的基本位置也就是可以配置到WEB-INF目录下面的文件夹中,这样做好...
问了高手,结果没人回应哦,可能高手都忙着呢。
@mrvoce
Struts、spring mvc直接配置视图的基本位置也就是可以配置到WEB-INF目录下面的文件夹中,这样做好...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部