零配置实现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文件了,但是在配置类里配置了,其实没差
配置类其实主要就是将引入第三方的插件要使用的类加入到spring容器,用@Bean注解

@Configuration
public class ApplicationCfg {
@Bean
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter4(){
    return new FastJsonHttpMessageConverter();
}
}

要使用的FastJsonHttpMessageConverter类(第三方的类,不是自己写的)中的方法,就用配置的方式将该类加入到spring容器中托管,这样该类就能用自动注入的方式引用该类中的方法了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,实现IOC(Inversion of Control,控制反转)可以使用依赖注入(DI)技术。依赖注入是IOC的一种实现方式,是一种通过外部注入的方式来实现对象之间的依赖关系的技术。 下面是一个简单的实现IOC的例子: 1. 定义一个接口(例如:Animal)和一个实现类(例如:Dog): ```java public interface Animal { void say(); } public class Dog implements Animal { public void say() { System.out.println("汪汪汪"); } } ``` 2. 创建一个IOC容器(例如:ApplicationContext),并在容器中注册实现类: ```java public interface ApplicationContext { Object getBean(String name); } public class SimpleApplicationContext implements ApplicationContext { private Map<String, Object> beans = new HashMap<String, Object>(); public SimpleApplicationContext() { beans.put("dog", new Dog()); } public Object getBean(String name) { return beans.get(name); } } ``` 3. 在应用程序中通过IOC容器获取对象: ```java public class App { public static void main(String[] args) { ApplicationContext context = new SimpleApplicationContext(); Animal animal = (Animal)context.getBean("dog"); animal.say(); } } ``` 在上面的例子中,我们创建了一个简单的IOC容器,并在容器中注册了一个实现类。在应用程序中,我们通过IOC容器获取实现类的实例,而不是通过new创建对象。这样做的好处是,当需要更换实现类时,只需要在IOC容器中注册新的实现类即可,而不需要修改应用程序的代码。 这只是一个简单的例子,实际的IOC容器会更加复杂,可以使用第三方框架(例如:Spring)来实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值