zoukankan      html  css  js  c++  java
  • Spring之Bean管理------注解方式

    编写测试类

    1,编写相关的类

    public interface UserDao {
    public void sayHello();
    }
    public class UserDaoImpl implements UserDao {
    @Override
    public void sayHello() {
    System.out.println("Hello Spring...");
    } 
    }

    2,配置注解扫描

    <!-- 指定扫描bean包下的所有类中的注解.base-package属性是需要注解的类所在包的包名
      注意:扫描包时会扫描指定报下的所有子孙包,这个bean包是我自己创建的.

     -->
    <context:component-scan base-package="bean"></context:component-scan>

    3,在相关的类上添加注解

    @Component(value="userDao")
    public class UserDaoImpl implements UserDao {
    @Override
    public void sayHello() {
    System.out.println("Hello Spring Annotation...");
    }
    }

    4,编写测试类

    @Test
    public void demo2() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//applicationContext.xml是在src下
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    userDao.sayHello();
    }

    Spring 的 Bean 管理的中常用的注解

    1 ,@Component:组件.(作用在类上)

    Spring 中提供@Component 的三个衍生注解:(功能目前来讲是一致的)

    * @Controller :WEB 层

    * @Service :业务层

    * @Repository :持久层

    这三个注解是为了让标注类本身的用途清晰,Spring 在后续版本会对其增强

    2,属性注入的注解:(使用注解注入的方式,可以不用提供 set 方法.)

    @Value :用于注入普通类型.

    @Autowired :自动装配: * 默认按类型进行装配. * 按名称注入: 如果有同一个类有两个已经注解的实例,会比较麻烦

    @Qualifier:强制使用名称注入.

    @Resource 相当于: @Autowired 和@Qualifier 一起使用.

    3,Bean 的作用范围的注解:

    @Scope:

    singleton:单例

    prototype:多例

    4,Bean 的生命周期的配置:

    @PostConstruct :相当于 init-method

    @PreDestroy :相当于 destroy-method

    比如:

    @Component("User")
    @Scope(scopeName="singleton")//指定对象的作用范围singleton是单例,prototype是多例
    public class User {
        
        @Value(value="***")
        private String name;
        @Value(value="19")
        private Integer age;
        //@Autowired//自动装配
        //@Qualifier("car2")
        
        @Resource(name="car2")
        private Car car;
    //中间省略了get和set方法 @PostConstruct
    public void init(){ System.out.println("初始化方法"); } @PreDestroy public void destory(){ System.out.println("销毁方法"); } }
  • 相关阅读:
    使用winmm.dll 获取麦克风声音数据
    什么是拆箱和装箱?
    C#窗体程序【用户控件-窗体】委托事件
    如何在网页标题栏加入logo图标?
    C#汉字转拼音帮助类
    JQuery中$.ajax()方法参数详解
    UEditor独立图片、文件上传模块
    SqlServer2008安装时提示重启计算机失败 解决办法
    如果说人生是自我编写的程序
    LINQ的Any() 方法
  • 原文地址:https://www.cnblogs.com/QianYue111/p/9781136.html
Copyright © 2011-2022 走看看