spring
代码地址 网盘/框架/spring/spring.rar
IoC
IoC的全称是Inversion of Control,中文称为控制反转, Martin Flower由根据它创造了一个新词:Dependency Injection,中文称为依赖注入。这两个词讲的是一回事儿。
实现IoC通常有三种方式:
1)利用接口或者继承,一般以接口较多。这种实现方式和我们平时提到的lazy load有异曲同工之妙。
2)构造函数注入。3)属性注入。
简单的接口和实现;通过静态工厂创建Bean;通过实例工厂创建Bean
如何设置对象属性
Spring支持两种方式对属性赋值:set方式和构造函数。
通过Set方式为对象属性赋值
<bean id="userService" class="sample.spring.ioc.UserServiceBean">
<property name="userID" value="1"/>
</bean>
通过构造函数为对象属性赋值
<bean id="userService2" class="sample.spring.ioc.UserServiceBean">
<constructor-arg index="0" value="1"/>
</bean>
需要注意:我们定义的业务对象应该保留默认的构造函数。
原文链接 http://www.cnblogs.com/wing011203/archive/2013/05/15/3078849.html
原文 这是作用在setter上的Annotation,@Resource 可以不写明name参数,这时Spring会首先按照名字然后按照数据类型的方式去定位bean。
有问题
自动注册 <context:component-scan base-package="sample.spring.ioc"/>
然后我们可以在sample.spring.ioc包下的对象,添加@Component/@Service/@Controller/@repository,这样Spring会自动将带有这些Annotation的类进行注册。
@Resource/@Autowried/@Qualifier
@Resource(name="userDaoImpl") private UserDao userDao1;
@Autowired(required=false) @Qualifier("userDaoImpl3") private UserDao userDao3;
1 @Resource 2 public void setUserDao2(UserDao userDao2) { 3 this.userDao2 = userDao2; 4 }
这是作用在setter上的Annotation,@Resource 可以不写明name参数,这时Spring会首先按照名字然后按照数据类型的方式去定位bean。
AOP
通常情况下,对于AOP,我们有两种方式来实现。
使用DynamicProxy实现AOP;使用Cglib实现AOP
使用Spring实现AOP
使用Annotation来配置AOP的信息
Spring框架集合了ProxyFactory和Cglib两种方式来实现AOP。
Spring中,如果类实现了接口,Spring会按照ProxyFactory的方式来处理;如果没有实现接口,Spring会按照Cglib的方式来处理。
使用Spring配置文件来配置AOP
原文链接 http://blog.csdn.net/xiaoxian8023/article/details/17258933
在web.xml中配置spring
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
spring读取配置文件
<bean id="propertyConfigurer"
class="com.yongtong.tool.ReadPropertiesContent">
<property name="locations">
<list>
<value>/WEB-INF/classes/config.properties</value>
</list>
</property>