关于spring的注解

来源:互联网 发布:纯粮固态发酵白酒知乎 编辑:程序博客网 时间:2024/06/05 09:02

Annotation第一步

    1.修改xml文件,参考文档<context:annotation-config/>

学习的注解:@Autowired(不推荐使用)

默认按类型ByType

如果想用byName使用注解@Qulifier

写在private field(不建议使用)

如果卸载set函数上用@qualifier需要写在参数上

                        @Resource(重要)

默认按名称,名称找不到按类型

可以指定特定名称

推荐使用

                         @Component

初始化默认为类名首字母小写

可以指定很初始化bean的名字

                         @Scope

                        @PostConstruct@PreDestroy

先看配置文件:bean.xml

<?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-2.5.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-2.5.xsd"><span style="color:#FF0000;"><context:annotation-config /><context:component-scan base-package="com.bjsxt"></context:component-scan></span></beans>

User的Bean

package com.bjsxt.model;public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
Dao层

package com.bjsxt.dao;import com.bjsxt.model.User;public interface UserDAO {public void save(User user);}

Dao实现层

package com.bjsxt.dao.impl;import org.springframework.stereotype.Component;import com.bjsxt.dao.UserDAO;import com.bjsxt.model.User;@Component("userDAOImpl")public class UserDAOImpl implements UserDAO {public void save(User user) {//Hibernate//JDBC//XML//NetWorkSystem.out.println("user saved!");}}

service层

package com.bjsxt.service;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import javax.annotation.Resource;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;import com.bjsxt.dao.UserDAO;import com.bjsxt.model.User;<pre name="code" class="html">//添加该注解后在测试类中getBean("userService");可以找到<pre name="code" class="html"><pre name="code" class="html">userService

@Service("userService")public class UserService {private UserDAO userDAO; /** * 容器构造时调用 * */@PostConstructpublic void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}/** * 默认是byName * */@Resource(name="userDAOImpl")public void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}/** * 容器销毁之前调用 * */@PreDestroypublic void destroy() {System.out.println("destroy");}}
测试类:

package com.bjsxt.service;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bjsxt.model.User;//Dependency Injection//Inverse of Controlpublic class UserServiceTest {@Testpublic void testAdd() throws Exception {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");UserService service = (UserService)ctx.getBean("userService");service.add(new User());ctx.destroy();}}



0 0
原创粉丝点击