1、Spring针对Bean管理中创建对象提供注解
①@Component
②@Service
③@Controller
④ @Repository
*以上四个注解功能是一样的,都可用来创建bean实例
2、开启组件扫描(需要开启组件扫描才可使用注解)
<!--开启组件扫描 1、可扫描多个包,使用逗号分隔 2、需要开启组件扫描才可使用注解 --> <!--默认filter下:atguigu2包下所有类都会扫描--> <context:component-scan base-package="com.atguigu2"></context:component-scan> <!--将filter设置为false,如下,只扫描包下Component注解 --> <!-- use-default-filters="false" 表示现在不使用默认filter,自己配置filter context:include-filter 设置扫描哪些内容 --> <context:component-scan base-package="com.atguigu" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/> </context:component-scan> <!--默认filter下:atguigu2包下所有类都会扫描--> <!-- context:exclude-filter 设置不扫描哪些内容 --> <context:component-scan base-package="com.atguigu"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
3、使用注解进行对象创建
service类:
//在注解中value属性值可以省略不写 //若不写,则默认值是首字母小写的类名,如userService //四个注解都可以实现对象的创建 @Service(value="userService") //相当与<bean id="userService"> public class userService { private UserDAO userDAO; public void add(){ System.out.println("123"); } }
dao类:
public interface userDAO { void add(); }
@Repository public class userDAOImpl implements userDAO{ @Override public void add() { System.out.println("springzhujie"); } }
4、基于注解实现属性注入:
@Autowired 根据属性类型进行注入
@Service public class UserService { //定义 dao 类型属性 //不需要添加 set 方法 //添加注入属性注解 @Autowired private UserDao userDao; public void add() { System.out.println("service add......."); userDao.add(); } }
@Qualifier 根据名称进行注入
*Qualifier注解需要和Autowired一起使用
@Service public class userService { //定义dao类属性 //不需要添加set方法 //在属性处添加注入属性注解 @Autowired //根据类型进行注入 @Qualifier(value="userDAOImpl") //根据名称进行注入,Qualifier需要和Autowired一起使用 private UserDAO userDAO; public void add(){ System.out.println("123"); } }
@Resource 根据名称或类型注入
@Service public class userService { //定义dao类属性 //不需要添加set方法 //在属性处添加注入属性注解 //@Resource //根据类型注入 @Resource(name="userDAOImpl") //根据名称注入 private UserDAO userDAO; public void add(){ System.out.println("123"); } }
@Value 注入普通类型属性
@Service public class userService { //定义dao类属性 //不需要添加set方法 //在属性处添加注入属性注解 private UserDAO userDAO; @Value(value="普通类型注入") private String name; public void add(){ System.out.println("123"); } }
5、完全注解开发
①创建配置类,替代xml配置文件
@Configuration //作为配置类,替代xml配置文件 @ComponentScan(basePackages = {"com.atguigu"}) public class SpringConfig { }
②编写的测试有所变化
@Test public void testUser2(){ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); //此处需要变化 userService userService = context.getBean("userService", userService.class); userService.add(); }
【spring5】ioc-基于注解方式进行bean管理
最新推荐文章于 2024-05-30 11:35:05 发布