主要是学会spring中关于通过注释来配置bean。
以及处理怎样智选其一或者补选某一个bean还有就是关于当出现多个相同的bean的时候怎样配置;
具体的代码和配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 指定spring ioc容器扫描的包 --> <!-- 通过resource-pattern来指定扫描的资源 --> <!-- <context:component-scan base-package="test1" resource-pattern="test1.user/*.class"> </context:component-scan>--> <context:component-scan base-package="test1" use-default-filters="true"> <!-- <context:exclude-filter type="annotation" expression="baoing"/>指定排除那些那些指定的表达式的组件--> <!-- <context:include-filter type="annotation" expression="baoming "只包含指定的组件,需要将相应use-default-filters="false"的贼之改成false--> <!-- <context:exclude-filter type="assignable" expression="jikoubaomingjialeiming "/>--> </context:component-scan> </beans>
然后就是相应的g各个bean文件以及上边相应的注释。;
注意一定要放到相应的子包下下面。
package test1; import org.springframework.stereotype.Component; @Component public class TestObject { }
package test1.user; public interface UserRepository { void save(); }
package test1.user; import org.springframework.stereotype.Repository; @Repository("userRepository") public class UserReposityImpl implements UserRepository { @Override public void save() { // TODO Auto-generated method stub System.out.println("UserRepository save...."); } }
package test1; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import test1.cont.UserController; import test1.ser.UserService; import test1.user.UserRepository; public class Spring { public static void main(String[] args) { // TODO Auto-generated method stub ApplicationContext ct=new ClassPathXmlApplicationContext("beans-053.xml"); TestObject to=(TestObject) ct.getBean("testObject"); UserController userController=(UserController) ct.getBean("userController"); UserRepository userRepository=(UserRepository) ct.getBean("userRepository"); UserService userService=(UserService) ct.getBean("userService"); System.out.println(to); System.out.println(userController); System.out.println(userService); System.out.println(userRepository); } }
package test1.cont; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import test1.ser.UserService; @Controller public class UserController { @Autowired private UserService userService; public void execute() { System.out.println("UserController execute.."); userService.add(); } }
package test1.ser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import test1.user.UserRepository; //@Autowired(required=false)设置没有spring装备的bean //@Qualifier("zhidingde bean")设置指定的bean @Service public class UserService { @Autowired private UserRepository userRepository; public void add() { System.out.println("UserSerivce add.."); userRepository.save(); } }
实验结果如下: