Spring (3.2.3), spring3.2.3
In addition to XML-based configuration, Spring also supports Annotation-based configuration. Spring provides the following Annotation to mark Spring beans:
@ Component: Mark a common Spring Bean
@ Controller: Mark A Controller component class
@ Service: Mark a business logic component class
@ Repository: Mark a DAO component class
Example of Annotation-Based Configuration
The DAO component is marked with @ Repository:
public interface UserDao { public User getUserByUsername(String username);}
@Repository("userDao")public class UserDaoImpl implements UserDao { List<User> users = new ArrayList<User>(); public UserDaoImpl() { users.add(new User(1001, "huey", "123")); users.add(new User(1002, "tmac", "abc")); users.add(new User(1003, "suer", "xxx")); } public User getUserByUsername(String username) { for (User user : users) { if (username.equals(user.getUsername())) { return user; } } return null; }}
The business logic component is marked with @ Service:
public interface UserServ { public User queryUserByUsername(String username); }
@Service("userServ")public class UserServImpl implements UserServ { @Resource(name="userDao") private UserDao userDao; public User queryUserByUsername(String username) { return userDao.getUserByUsername(username); }}
The Spring configuration file does not require Bean configuration, but you must configure <context: component-scan/>:
<? Xml version = "1.0" encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans"Xmlns: context = "http://www.springframework.org/schema/context"Xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdHttp://www.springframework.org/schema/context Http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <! -- Automatically scans all Bean classes in the specified package and its sub-packages --><Context: component-scan base-package = "com. huey. dream"/></Beans>
Test method:
@Testpublic void testAnnotation() throws Exception { ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserServ userServ = appCtx.getBean("userServ", UserServ.class); String username = "huey"; User user = userServ.queryUserByUsername(username); System.out.println(user);}