xml配置文件app
<!-- 扫描com.test.annotation包下全部的类 --> <context:component-scan base-package="com.test.annotation"> </context:component-scan>
main文件ide
public static void main(String[] args) throws SQLException { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserController userController = (UserController) ctx.getBean("userController"); userController.excute(); }
controller文件ui
@Controller public class UserController { @Autowired private UserService userService; public void excute() { System.out.println("UserController excute..."); userService.add(); } }
service文件code
@Service public class UserService { @Autowired private UserRepository userRepository; public void add() { System.out.println("UserService add..."); userRepository.save(); } }
接口文件component
public interface UserRepository { public void save(); }
接口实现层文件xml
@Repository public class UserRepositoryImpl implements UserRepository { @Override public void save() { System.out.println("UserRepository Save..."); } }
利用@Autowired注解实现bean与bean之间的联系,上述main方法输出接口
UserController excute... UserService add... UserRepository Save...
2、IOC没有装配的bean
testObject文件get
//@Component public class TestObject { public void name() { System.out.println("TestObject ..."); } }
这个bean没有加上@Component注解,所以ioc容器不会加载它,可是又须要用到它,则需进行以下处理it
@Repository public class UserRepositoryImpl implements UserRepository { //设置required=false @Autowired(required=false) private TestObject testObject; @Override public void save() { System.out.println("UserRepository Save..."); System.out.println(testObject); } }
3、指定惟一bean
如今UserRepository接口有两个实现类,上面有一个,如今添加一个io
@Repository public class UserJdbcRepositoryImpl implements UserRepository{ @Override public void save() { System.out.println("UserJdbcRepositoryImpl save..."); } }
以下代码就不知道该调用哪一个实现类的save方法
@Service public class UserService { @Autowired private UserRepository userRepository; public void add() { System.out.println("UserService add..."); //这里不知道调用哪一个实现类的save方法 userRepository.save(); } }
为了指定调用哪一个save方法,则须要指定实现接口的哪一个类,修改以下
@Service public class UserService { @Autowired @Qualifier("userJdbcRepositoryImpl") private UserRepository userRepository; public void add() { System.out.println("UserService add..."); //这里指定了实现类UserJdbcRepositoryImpl userRepository.save(); } }