零配置实现IOC

创建一个配置类,相当于xml文件
1 创建一个包config——创建一个类ApplicationCfg
2 给该类加上注解@Configuration使该类生效;该注解是importorg.springframework.context.annotation.Configuration;包里的类,别引错包

@Configuration注解相当于xml中的
<bean></beans>
代表该类是个配置类

3给该类加上注解@ComponentScan(basePackages = “”);该注解是
import org.springframework.context.annotation.ComponentScan;包里的,别引错包

@ComponentScan(basePackages = {""});
该注解代表扫描包,双引号中写入要扫描的包,要扫描多个包就在双引号中用逗号隔开

4 类中用@Bean注解创建一个bean的方法

实现

接口类
public interface MyUserDao {
String addUserDao(String userName);
}

接口实现类IUserDao 
@Component("iUserDao")
public class IUserDao implements MyUserDao {
@Override
public String addUserDao(String userName){
    return userName;
}
}

接口实现类UserDao 
@Component("userDao")
public class UserDao implements MyUserDao {
@Override
public String addUserDao(String userName){
    return userName;
}
}

业务类
@Service
public class UserDaoTest {
@Autowired
@Qualifier("iUserDao")
MyUserDao myUserDao;
public String booking(){
    return myUserDao.addUserDao("xx");
}
}

配置类
@Configuration
//将2个接口实现类的包,1个业务类的包全部加入
@ComponentScan(basePackages = {"com.longteng.lesson2.my.impl","com.longteng.lesson2.my"})
public class ApplicationCfg {
@Bean
//方法返回、new的都是业务实现类
public UserDaoTest initUserDao(){
    return new UserDaoTest();
}
}

测试类
public class Test {
ApplicationContext context;
@BeforeClass
public void beforeTest() {
//启动容器不再用添加xml文件的方式,而是用启动配置类的方式
    context=new AnnotationConfigApplicationContext(ApplicationCfg.class);
}
@org.testng.annotations.Test
public void bookingTest(){
    UserDaoTest userDaoTest=(UserDaoTest) context.getBean("userDaoTest");
    assertEquals("校验姓名","xx" ,userDaoTest.booking());
    }
}

这样就不用配置xml文件了,但是在配置类里配置了,其实没差

猜你喜欢

转载自blog.csdn.net/qq_41767337/article/details/89032554
今日推荐