就目前我的了解spring可以当成是一个解耦的工具,任何java类都可以被xml格式所描述,可能是我接触的不太多的过......
首先下载spring的jar包,如果项目里使用了maven,可以通过这个下载,官方也支持,否则很头疼,我是通过maven下载后,在maven本地仓库找的这些jar包,不知道别人谁有啥好办法。
spring 3.0之后支持注解了
目录结构:
applicationContex.xml -spring的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd" >
<context:annotation-config />
<context:component-scan base-package="com.SpringTest.java.service"/>
<context:component-scan base-package="com.SpringTest.java.dao"/>
<context:component-scan base-package="com.SpringTest.java.controller"/>
<bean id="userAction" class="com.SpringTest.java.model.User">
<property name="username" value="admin"></property>
</bean>
</beans>
使用注解需要添加 xsi:schemaLocation
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
在配置文件中添加:
<context:annotation-config />
<context:component-scan base-package="com.SpringTest.java.service"/> --base-package中指定了需要扫描的包,使用注解的类都需要添加,否则会报异常
<context:component-scan base-package="com.SpringTest.java.dao"/>
<context:component-scan base-package="com.SpringTest.java.controller"/
<bean id="userAction" class="com.SpringTest.java.model.User">
<property name="username" value="admin"></property>
</bean>
用bean的方式配置了一下user类。
UserService.java
使用了@Service。目前 @Repository @Service @Controller 其实跟@component是等效的。
package com.SpringTest.java.service;
import javax.annotation.Resource;
import com.SpringTest.java.dao.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.stereotype.Service;
@Service(value="userService")
public class UserService {
@Resource
private UserDao userDao;
public UserDao getUserDao()
{
return userDao;
}
public void setUserDao(UserDao us)
{
this.userDao=us;
}
}
value="userService" 一般默认第一个字母小写,相当于起的别名。
UserAction.java
package com.SpringTest.java.controller;
import javax.annotation.Resource;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.SpringTest.java.service.*;
@Controller(value="ua")
@Scope(value="prototype")
public class UserAction {
@Resource
private UserService userService;
public UserService getUserService()
{
return userService;
}
public void SetUserService(UserService us)
{
this.userService=us;
}
}
package com.SpringTest.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.SpringTest.java.controller.UserAction;
public class UserInfo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); //加载配置文件
UserAction useraction = (UserAction)ac.getBean("ua"); //得到userAction的实例
System.out.println("Action:"+useraction);
System.out.println("Service:"+useraction.getUserService());
System.out.println("Dao:"+useraction.getUserService().getUserDao());
}
}