Spring03

UserConfig .java

可以完全代替xml配置文件

package com.bky.config;

import com.bky2.dao.Dao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

import java.util.Date;

/**
 * Configuration 注解标识的类是一个配置类
 */
@Configuration
@ComponentScan("com.bky")
public class UserConfig {

    @Bean
    /**
     * bean 注解用于方法上 加上这个注解 方法的返回值会装载到spring的容器里面
     * 没有指定id 的时候 默认方法名称为方法的id
     */
//    @Scope("prototype")
    public Date getDate(){
        return new Date();
    }


}

UserDao .java

package com.bky.dao;


public interface UserDao {
    void login();
}

UserDaoImpl .java

package com.bky.dao;

import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements  UserDao{

    @Override
    public void login() {
        System.out.println("登录成功");
    }
}

UserService .java

package com.bky.service;

public interface UserService {
    void login();
}

UserServiceImpl .java

package com.bky.service;

import com.bky.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("userServiceImpl01")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public void login() {
        userDao.login();
    }
}

UserServiceImpl02 .java

package com.bky.service;

import com.bky.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("userServiceImpl02")
public class UserServiceImpl02 implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public void login() {
        userDao.login();
    }
}

UserServlet .java

package com.bky.servlet;

public interface UserServlet {
    void login();
}

UserServletImpl .java

package com.bky.servlet;

import com.bky.service.UserService;
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;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

@Controller(value = "userServlet")
@Scope("prototype") //属性多例
public class UserServletImpl implements UserServlet{
    //@Autowired 根据类型注入 只要在容器中找到相同类型的 就与之注入

//    不能单独使用 需要和Autowired一起使用
//    @Qualifier("userServiceImpl")
        @Resource(name = "userServiceImpl01")
    //    根据容器中的唯一标识去注入 name属性不能省略
//    @Resource(name = "userServiceImpl01")
//    @Qualifier("userServiceImpl01")
//    @Autowired
    private UserService userService;
    @Override
    public void login() {
        userService.login();
    }

    /**
     * @Scope("prototype") 当作用范围为单例是 只要容器创建 对象就创建 容器销毁 对象就随之销毁
     * 当作用范围是多例时 什么时候使用什么时候创建 调用结束 容器就销毁
     */
//    指定初始化的方法
    @PostConstruct
    public void postConstruct() {
        System.out.println("初始化成功");
    }
    //指定销毁方法
    @PreDestroy
    public void preDestory() {
        System.out.println("容器销毁成功");
    }
}

UserTest02 .java

package com.bky.ui;

import com.bky.config.UserConfig;
import com.bky.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.Date;

public class UserTest05 {
    public static void main(String[] args) {
        //获取容器对象
        ApplicationContext applicationContext
                =new AnnotationConfigApplicationContext(UserConfig.class);

        UserService userService = (UserService) applicationContext.getBean("userServiceImpl01");
        System.out.println(userService);
//        Date getDate = (Date) applicationContext.getBean("getDate");
//        System.out.println(getDate);
    }
}


在这里插入图片描述

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页