1 未使用注解
package com. tzb. dao;
import com. tzb. model. User;
public interface IUserDao {
public void add ( User user) ;
}
package com. tzb. dao;
import com. tzb. model. User;
public class UserDaoImpl implements IUserDao {
@Override
public void add ( User user) {
System. out. println ( "dao 添加用户 " + user) ;
}
}
package com. tzb. service;
import com. tzb. model. User;
public interface IUserService {
public void add ( ) ;
public void add ( User user) ;
}
package com. tzb. service;
import com. tzb. dao. IUserDao;
import com. tzb. model. User;
import org. springframework. stereotype. Component;
@Component
public class UserServiceImpl implements IUserService {
private IUserDao userDao;
private String name;
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
@Override
public void add ( ) {
System. out. println ( "创建用户:" + name) ;
}
@Override
public void add ( User user) {
System. out. println ( "添加用户:" + user) ;
userDao. add ( user) ;
}
public IUserDao getUserDao ( ) {
return userDao;
}
public void setUserDao ( IUserDao userDao) {
this . userDao = userDao;
}
public UserServiceImpl ( ) {
System. out. println ( "UserServiceImpl 被调用" ) ;
}
}
package com. tzb. web. action;
import com. tzb. model. User;
import com. tzb. service. IUserService;
public class UserAction {
private IUserService userService;
public IUserService getUserService ( ) {
return userService;
}
public void setUserService ( IUserService userService) {
this . userService = userService;
}
public void save ( User user) {
System. out. println ( "action save方法" ) ;
userService. add ( user) ;
}
}
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
< bean id = " userDao" class = " com.tzb.dao.UserDaoImpl" > </ bean>
< bean id = " userService" class = " com.tzb.service.UserServiceImpl" >
< property name = " userDao" ref = " userDao" > </ property>
</ bean>
< bean id = " userAction" class = " com.tzb.web.action.UserAction" >
< property name = " userService" ref = " userService" > </ property>
</ bean>
</ beans>
@Test
public void test2 ( ) {
ApplicationContext context = new ClassPathXmlApplicationContext ( "beans11.xml" ) ;
IUserService userService = ( IUserService) context. getBean ( "userService" ) ;
User user = new User ( ) ;
user. setUsername ( "Mike" ) ;
user. setAge ( 22 ) ;
userService. add ( user) ;
}
2 使用注解时
package com. tzb. dao;
import com. tzb. model. User;
import org. springframework. stereotype. Repository;
@Repository
public class UserDaoImpl implements IUserDao {
@Override
public void add ( User user) {
System. out. println ( "dao 添加用户 " + user) ;
}
}
package com. tzb. service;
import com. tzb. dao. IUserDao;
import com. tzb. model. User;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. stereotype. Component;
import org. springframework. stereotype. Service;
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
private String name;
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
@Override
public void add ( ) {
System. out. println ( "service 创建用户:" + name) ;
}
@Override
public void add ( User user) {
System. out. println ( "service 添加用户:" + user) ;
userDao. add ( user) ;
}
public UserServiceImpl ( ) {
System. out. println ( "UserServiceImpl 被调用" ) ;
}
}
package com. tzb. web. action;
import com. tzb. model. User;
import com. tzb. service. IUserService;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. stereotype. Controller;
@Controller
public class UserAction {
@Autowired
private IUserService userService;
public void save ( User user) {
System. out. println ( "action save方法" ) ;
userService. add ( user) ;
}
}
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
< context: annotation-config>
</ context: annotation-config>
< context: component-scan base-package = " com.tzb" > </ context: component-scan>
</ beans>
@Test
public void test ( ) {
ApplicationContext context = new ClassPathXmlApplicationContext ( "beans12.xml" ) ;
UserAction userAction = context. getBean ( UserAction. class ) ;
User user = new User ( ) ;
user. setUsername ( "Mike" ) ;
user. setAge ( 22 ) ;
userAction. save ( user) ;
}
3 指定注入的名字
2.1 @Resource
package com. tzb. web. action;
import com. tzb. model. User;
import com. tzb. service. IUserService;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. beans. factory. annotation. Qualifier;
import org. springframework. stereotype. Controller;
import javax. annotation. Resource;
@Controller
public class UserAction {
@Resource ( name = "myUserService" )
private IUserService userService;
public void save ( User user) {
System. out. println ( "action save方法" ) ;
userService. add ( user) ;
}
}
2.2 多例 @Scope("prototype")
package com. tzb. web. action;
import com. tzb. model. User;
import com. tzb. service. IUserService;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. beans. factory. annotation. Qualifier;
import org. springframework. context. annotation. Scope;
import org. springframework. stereotype. Controller;
@Controller
@Scope ( "prototype" )
public class UserAction {
@Autowired
@Qualifier ( "myUserService" )
private IUserService userService;
public void save ( User user) {
System. out. println ( "action save方法" ) ;
userService. add ( user) ;
}
}
@Test
public void test ( ) {
ApplicationContext context = new ClassPathXmlApplicationContext ( "beans1.xml" ) ;
UserAction userAction = context. getBean ( UserAction. class ) ;
User user = new User ( ) ;
user. setUsername ( "Mike" ) ;
user. setAge ( 22 ) ;
userAction. save ( user) ;
UserAction userAction2 = context. getBean ( UserAction. class ) ;
System. out. println ( userAction) ;
System. out. println ( userAction2) ;
}
2.3 @PostConstruct
,@PreDestroy
package com. tzb. dao;
import com. tzb. model. User;
import org. springframework. stereotype. Repository;
import javax. annotation. PostConstruct;
import javax. annotation. PreDestroy;
@Repository
public class UserDaoImpl implements IUserDao {
@PostConstruct
public void myInit ( ) {
System. out. println ( "dao 自定义初始化..." ) ;
}
@PreDestroy
public void myDestory ( ) {
System. out. println ( "dao 自定义销毁..." ) ;
}
@Override
public void add ( User user) {
System. out. println ( "dao 添加用户 " + user) ;
}
}
@Test
public void test ( ) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
ApplicationContext context = new ClassPathXmlApplicationContext ( "beans1.xml" ) ;
UserAction userAction = context. getBean ( UserAction. class ) ;
User user = new User ( ) ;
user. setUsername ( "Mike" ) ;
user. setAge ( 22 ) ;
userAction. save ( user) ;
context. getClass ( ) . getMethod ( "close" ) . invoke ( context) ;
}