Expert.One.on.one.J2EE.Development.Without.EJB笔记

原创 2005年01月03日 20:44:00

Spring:IOC+AOP

1.如何通过bean factory读取bean(p178)
public class TextStyle {
private String fontName = “default”;
private int fontSize = 9;
private boolean bold = false;
private boolean italic = false;
public void setFontName(String fontName) {
this.fontName = fontName;
}
public String getFontName() {
return fontName;
}
...
}

<beans>
<bean id=”myStyle” class=”style.TextStyle”>
<property name=”fontName”><value>Arial</value></property>
<property name=”fontSize”><value>12</value></property>
</bean>
<bean id=”yourStyle” class=”style.TextStyle”>
<property name=”fontName”><value>Times</value></property>
<property name=”fontSize”><value>10</value></property>
<property name=”bold”><value>true</value></property>
<property name=”italic”><value>true</value></property>
</bean>
</beans>


Resource resource = new ClassPathResource(“styles.xml”); - 1
ListableBeanFactory bf = new XmlBeanFactory(resource);  - 2


TextStyle myStyle = (TextStyle) bf.getBean(“myStyle”);
TextStyle yourStyle = (TextStyle) bf.getBean(“yourStyle”);

1,2 can be replaced to

NO-XML:
ListableBeanFactory bf = new DefaultListableBeanFactory();
PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(bf);
Resource resource = new ClassPathResource(“styles.properties”);
reader.loadBeanDefinitions(resource);

XML:
ListableBeanFactory bf = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(bf);
Resource resource = new ClassPathResource(“styles.xml”);
reader.loadBeanDefinitions(resource);

2.Autowire(p185)
2.1 byType 避免显示的在配置中设置ref,而是根据bean的属性类型自动查找。
<bean id=”myProductManager” class=”ebusiness.DefaultProductManager” autowire=”byType”>
2.2 byName 根据bean的属性名匹配。

3.Dependency checking 类型检查
support:simple(primitives and Strings);objects;all(simple & objects)
e.g
<bean id=”myProductManager” class=”ebusiness.DefaultProductManager”
autowire=”byType” dependency-check=”objects”>

5.Constructor wiring up
IOC 包括Dependency Look up(EJB) + Dependency Injection
Dependency Injection 包括 Setting Injection + Constructor Injection

Spring bean factory can also provide autowiring for constructors,define sequence index.
<beans>
<bean id=”myInventoryManager” class=”ebusiness.DefaultInventoryManager”/>
<bean id=”myProductManager” class=”ebusiness.DefaultProductManager”>
<constructor-arg index=”0”>
<ref bean=”myInventoryManager”/>
</constructor-arg>
<constructor-arg index=”1”>
<value>true</value>
</constructor-arg>
</bean>
</beans>

6.Lifecycle Callbacks(p188)
6.1 Two callback interfaces provided after property setting and on bean factory shutdown.
public interface InitializingBean {
void afterPropertiesSet() throws Exception;
}

public interface DisposableBean {
void destroy() throws Exception;
}

6.2 Declarative specification of callback methods,not involve Spring dependencies.
<bean id=”myInventoryManager” class=”ebusiness.DefaultInventoryManager”
init-method=”initialize” destroy-method=”shutdown”/>

7. Complexy property value.(p190)
Bean factory support complexy property value such as List,Map,Array etc.

8.JNDI Resource(p199)
<beans>
<bean id=”myDataSource”
class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName”>
<value>jdbc/myds</value>
</property>
</bean>
<bean id=”myInventoryManager” class=”ebusiness.DefaultInventoryManager”>
<property name=”dataSource”>
<ref bean=”myDataSource”/>
</property>
</bean>
</beans>

Note that the JNDI name “jdbc/myds” will get resolved to “java:comp/env/jdbc/myds”.

9.ServletContext
Spring WebApplicationContext 
/WEB-INF/applicationContext.xml.

public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
 ServletContext sc = getServletContext();
 WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(sc);
 MyService myService = (MyService) wac.getBean(“myService”);
 request.setAttribute(“message”, myService.getMessage());
 request.setAttribute(“headline”, myService.getHeadline());
 request.getRequestDispatcher(“/myview.jsp”).forward(request, response);
}
}

10.Struct
Action -- controller
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
Action will automatically receive a ActionForm (if configured accordingly in strutsconfig.xml)

ActionForm -- model
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request):
invoked after population with request parameters but before the invocation of execute.

controller    Action
interceptor —
command/form    ActionForm
validator    ActionForm or declarative rules
validation errors holder  ActionErrors
model     ActionForm, manual request attributes
view reference    ActionForward

11.Spring MVC
controller    Controller, or any handler Object with an adapter
interceptor    HandlerInterceptor, or AOP MethodInterceptor
command/form    Any command or form JavaBean
validator    Validator
validation errors holder  Errors
model     Map of arbitrary model objects in ModelAndView
view reference    View instance or view name in ModelAndView

12.request-driven & event-driven
request-driven:Struct;Spring;WebWork2
event-driven:Tapestry;Java Server Face. (similar to .Net) RAD

《EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB》读书笔记

用户事务管理 是一个AOP的典型应用。比如控制哪些方法组成一个事务。 方法入口的切面日志,也是一个AOP的典型应用。 有一点比较模糊是类似数据源或者其它链接的open(),close() 这个是面...
  • yibei8811
  • yibei8811
  • 2016年11月10日 16:03
  • 157

firefox的一款记笔记的插件

网文快捕被我抛弃之后,一直很享受与firefox下的scrapbook带给我的迅速记录网页浏览记录的畅快中,但是它真正作为一款知识管理软件还是在功能的丰富性上难以满足我的要求,特别是在浏览网页时想记点...
  • daring_t
  • daring_t
  • 2010年05月30日 14:11
  • 1204

Java丨仿“有道云笔记”项目 取名"Program 猿笔记"

- 项目名称:Program 猿笔记 - 开发工具:MyEclipse + Tomcat + JDK 1.7 - 相关技术:Editor.md、Servlet、Freemarker、Mysql、A...
  • lihaojie1996
  • lihaojie1996
  • 2017年04月24日 15:18
  • 1224

蚂蚁笔记.leanote转为知笔记支持的MD文档

本人搭建的蚂蚁笔记服务器最近被黑, 怀疑是蚂蚁笔记漏洞导致. ----------------------------------------------------------------- 所...
  • love100628
  • love100628
  • 2018年01月12日 11:32
  • 140

CS231n课程笔记翻译系列之目录汇总

知乎上CS231n课程翻译系列 翻译的笔记非常好,为了方便查看,这里把所有目录列于此,并给出链接。 Python Numpy教程(全篇) Python 基本数据类型 容器(列表, 字典, 集合, ...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2017年01月16日 20:20
  • 9095

excel笔记整理

1、excel:由微软公司生产的办公软件之一,电子制表软件,工作簿,可以用来做表格、进行数据处理等 2、打开方式: 方式一: 开始->所有程序->Microsoft office->Mi...
  • yangzai521
  • yangzai521
  • 2016年12月07日 20:51
  • 410

一个程序员的软件开发笔记[连载]

           总经理说要开发一个《网吧管理系统》,因为总公司的战略方针是给网吧做电脑,所以软件不也不能坐以旁观,要开发我们自己公司的《网吧管理系统》,配合公司的发展。          可是,...
  • zhaiqinjiang
  • zhaiqinjiang
  • 2006年03月10日 21:03
  • 1169

博客和笔记

最近很少更新博客了,是因为最近迷恋上了用markdown来写文章和记笔记。最近系统的学习了一下markdown和reStructuredText两种markup语言,感觉markdown确实很适合来做...
  • cnsword
  • cnsword
  • 2014年03月03日 21:58
  • 3043

Boostnote:适合程序员的笔记软件

Boostnote:适合程序员的笔记软件注意: Boostnote正在开发中,需要鼓励和耐心等待其完善,或者加入他们一起改进 Boostnote,真心希望 Boostnote 坚持下去。1. Boos...
  • u013553529
  • u013553529
  • 2017年04月21日 00:12
  • 10305

Evernote和有道云笔记的比较

每个人可能都有随手记录一些事情的习惯,可能是为了不忘记,也可能是随时闪现在头脑中的一些想法,因此就有了便利贴,而在计算机或者说互联网的时代,我们就有了更多选择,可以随时利用身边的工具来记录自己的零碎记...
  • lingyun2005
  • lingyun2005
  • 2013年02月06日 21:58
  • 28019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Expert.One.on.one.J2EE.Development.Without.EJB笔记
举报原因:
原因补充:

(最多只允许输入30个字)