spring notes

请确保配置bean.xml位于工作路径之下,注意工作路径并不等同于CLASSPATH ,eclipse
的默认工作路径为项目根路径,也就是.project文件所在的目录


Type1 接口注入
 ((Object)(class.forName("").newInstance())).doSomething();
Type2 设值注入
 
Type3 构造子注入
 PicoContainer(另一种实现了依赖注入模式的轻量级容器)首先实现了Type3类型的依赖注入模式。

Spring Bean封装机制
 Spring 大量引入了Java 的Reflection机制,通过动态调用的方式避免硬编码方式的约束,并在此基础上建立了其核心组件BeanFactory
 核心中的核心为BeanWrapper和BeanFactory类
BeanWrapper:
 Object obj = Class.forName().newInstance();
 BeanWrapper bw = new BeanWrapperImpl(obj)
 bw.setPropertyValue("",obj);
  //if is a object , must set first.
BeanFactory:
 负责创建并维护Bean实例
 1.Bean属性值及依赖关系(对其他Bean的引用)
 2.Bean创建模式(是否Singleton模式,即是否只针对指定类维持全局唯一的实例)
 3.Bean初始化和销毁方法
 4.Bean的依赖关系
  id,class,init-method,destroy-method,singleton,depends-on[一般不需要]
 BeanFactory factory = new XmlBeanFactory(new FileSystemResource("C:/temp/eclipse/springguide/src/main/java/spring2.xml"));

BeanWrapper实现了针对单个Bean的属性设定操作。而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,BeanFactory从中读取
类名、属性名/值,然后通过Reflection机制进行Bean加载和属性设定。


特定类的特定方法是否满足条件,满足的话就运用通知。
核心接口: 
 PointCut:ClassFilter getClassFilter();MethodMatcher getMethodMatcher();
代理target类声明为内部bean
 

ApplicationContext
 覆盖了BeanFactory的所有功能,并提供了更多的特性,包括
 1。国际化支持
 2。资源访问:支持对文件和URL的访问。
 3。事件传播:事件传播特性为系统中状态改变时的检测提供了良好支持。
 4。多实例加载:可以在同一个应用中加载多个Context实例。
1。国际化支持
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>
目前Spring中提供了两个MessageSource接口的实现,即ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,后者提供了无需重启即可重新加载配置信息的特性。
2。事件传播
ApplicationContext基于Observer模式(java.util包中有对应实现),提供了针对Bean的事件传播功能。通过Application. publishEvent方法,我们可以将事件通知系统内所有的ApplicationListener。
ApplicationContextAware,ApplicationEvent,ApplicationListener


chapter 4 Resource
Interface
 Resource,ResourceLoader,ResourceLoaderAware
Class
 FileSystemResource;URLResource;ClassPathResource;ServletContextResource;
 ResourceLoader 有四种形式:file:;http:;classpath:;和none


chapter 22 mail
org.springframework.mail.MailSender,
org.springframework.mail.SimpleMailSender,
 encapatured cc,from,to,text,subject
MailException rooted exception hiartiche.
org.springframework.mail.javamail.JavaMailSender
org.springframework.mail.javamail.MimeMessagePrepare
 mime


chapter 23 schedule with quartz and timer

 

jpa annotation
ioc
transaction
mapping


1.PrepareStatementSetter, PrepareStatementCreator,SqlProvider
preparestatementsetter
preparestatementcreator,sqlprovider

2.JdbcTemplate.update one column
jdbcTemplate.update(sql,new Object[]{new java.util.Random().nextInt()});
 callback preparestatementsetter and preparestatementcreator
Your can also use jdbc type as following
 jdbcTemplate.update(sql,new Object[]{new java.util.Random().nextInt()},new int[]{Types.INTEGER});

3.update more than one row
BatchPreparedStatementSetter,
 jdbcTemplate.batchUpdate(String sql,BatchPreparedStatementSetter setter);
 jdbcTemplate.batchUpdate(String[] sqls);

4.Reading data
 RowCallbackHandler.void processRow(java.sql.ResultSet rs)
5.ResultReader[I]
 extract a row for reuse
 RowMapperResultReader
6.queryForSimpleType
 jdbcTemplate.queryForInt
7.Calling stored procedures

4.2.3 Creating operations as objects
SqlUpdate
  setDataSource(dataSource);
  setSql("insert into test values (?)");
  declareParameter(new SqlParameter(Types.INTEGER));
  compile();
 First, we have to supply our SqlUpdate object with a DataSource. It uses this to create a JdbcTemplate
 declareParameter() calls after we configure the SQL,the order in which we issue these statements is important

 

sequence
constraints
倒出来【】

你可能感兴趣的:(eclipse,spring,sql,bean,quartz)