spring 注解 容器的注入注出

前提:已经部署spring(参考上篇:web project 部署 spring bean工厂)

一:新增依赖jar包

  1:spring-aop-4.1.6.RELEASE.jar  (修改applicationContext.xml中beans属性时需要)

二:web.xml不变,修改applicationContext.xml

  1:去掉dtd(<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">)

  2:新增beans属性(xmlns,xmlns:xsi,xmlns:context,xsi:schemaLocation)

  3:去掉<bean/>的容器注入,修改为注解扫描注入

  4:去掉<bean/>之间的关联注入,修改为注解自动注入

三:spring容器类采用注解注入注出

  1:注入spring容器(@Component、@Controller、@Service、@Repository)

  2:spring容器中注出到bean中(@Resource(name="xxx")、@Autowired)

ps:

  1:applicationContext.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">
    <context:annotation-config />
    <!-- 根据注解扫描类放入容器  -->
    <context:component-scan base-package="dao,service" />
    <!--升级: 注解,自动注入 -->
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
</beans>

  2:servlet不变,service(StudentServiceImpl)

package service;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import dao.StudentDao;
import entity.Student;

@Service("studentService")
public class StudentServiceImpl implements StudentService {
    @Resource(name="a")
    private StudentDao studentDaot;

    public void insertStudent(Student student){
        studentDaot.insert(student);
    }
}

  3:dao(StudentDaoImpl)

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import org.springframework.stereotype.Repository;
import entity.Student;

@Repository("a")
public class StudentDaoImpl implements StudentDao {
    public void insert(Student student){

        try{
            Class.forName(driver);
            Connection con = DriverManager.getConnection(url,userName,password);
            Statement sql = con.createStatement();

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            sql.execute("insert student(name,math,create_time) values(‘"+student.getName()+"‘,‘"+student.getMath()+"‘,‘"+sdf.format(student.getCreateTime())+"‘)");

            sql.close();
            con.close();
        }catch(java.lang.ClassNotFoundException e){
            System.err.println("ClassNotFoundException:" + e.getMessage());
        }catch(SQLException ex){
            System.err.println("SQLException:" + ex.getMessage());
        }

    }
}
时间: 2024-10-25 15:42:58

spring 注解 容器的注入注出的相关文章

Spring依赖注入——java项目中使用spring注解方式进行注入

注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowired配合使用,指定bean的名称 Service,Controller,Repository分别标记类是Service层类,Contro

Spring 注解Autowired自动注入bean异常解决

错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined 错误的一般解决办法: 1.看xxbean是否已经注入,或者得到的bean名字错误. 2.看spring的配置文件<context:component-scan base-package="com.xx"></context:component-scan>是否扫描了 c

Spring学习笔记——关于Spring注解扫描不能注入new对象问题

这几天Leader让我用工厂模式对部分业务逻辑代码进行重构,过程是痛苦的(这里就不详细说了),结果很甜蜜.下面记录一下我在重构过程中遇到一个问题. 部分代码如下: @service(orderFactory) public class OrderFactory implements IOrderFactory{ public OrderCreate factory(String type){ if(type != null && type.indexOf("1")! =

Spring IOC容器中注入bean

一.基于schema格式的注入 1.基本的注入方式 (属性注入方式) 根据setXxx()方法进行依赖注入,Spring只会检查是否有setter方法,是否有对应的属性不做要求 <bean id="student" class="com.lq.ioc.Student"> <property name="name" value="zhansan"></property> <propert

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea

文章大纲 在xml中声明bean和注入bean 在xml中声明bean和自动注入bean 自动扫描bean和自动注入bean 对自动扫描bean增加约束条件 首次接触spring请参考 Spring 3.0 学习-环境搭建和三种形式访问 1.典型的Spring XML 配置文件表头 <?xml version="1.0" encoding="UTF-8"?><!-- 一般化的Spring XML 配置 --> <beans xmlns=

Spring注解自动注入Bean

我们知道采用Spring注解时,配置如下: [html] view plaincopy <context:annotation-config /> <context:component-scan base-package="cn.itkt"></context:component-scan> 这样的话,在com包及其所有子包下的所有类如果含有@Component.@Controller.@Service.@Repository等注解的话都会自动纳入到

Spring IOC源码详解之容器依赖注入

Spring IOC源码详解之容器依赖注入 上一篇博客中介绍了IOC容器的初始化,通过源码分析大致了解了IOC容器初始化的一些知识,先简单回顾下上篇的内容 载入bean定义文件的过程,这个过程是通过BeanDefinitionReader来完成的,其中通过 loadBeanDefinition()来对定义文件进行解析和根据Spring定义的bean规则进行处理 - 事实上和Spring定义的bean规则相关的处理是在BeanDefinitionParserDelegate中完成的,完成这个处理需

Spring IOC源代码具体解释之容器依赖注入

Spring IOC源代码具体解释之容器依赖注入 上一篇博客中介绍了IOC容器的初始化.通过源代码分析大致了解了IOC容器初始化的一些知识.先简单回想下上篇的内容 加载bean定义文件的过程.这个过程是通过BeanDefinitionReader来完毕的.当中通过 loadBeanDefinition()来对定义文件进行解析和依据Spring定义的bean规则进行处理 - 其实和Spring定义的bean规则相关的处理是在BeanDefinitionParserDelegate中完毕的,完毕这个

Spring使用注解配置依赖注入

大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单.不过类似于数据源对象这种配置信息容易变更的对象除外,这种对象使用xml文件来进行配置会更适合,方便于在外部进行修改,而不需要打开代码来进行修改. 接下来简单介绍一下注解的配置方式,首先要让Spring支持注解,编辑Spring配置文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&