Spring Annotation简介一

xiaoxiao2026-05-01  1

一个简单的范例,主要注意程序的输出,自然可以明白注解的应用

定义接口

package org.study.spring.dao;

import java.util.List; public interface MovieDao {     public List<String> findAll(); }

实现接口

package org.study.spring.dao.impl; import java.util.ArrayList; import java.util.List; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; import org.study.spring.dao.MovieDao; //Spring默认采用单例模式,采用prototype属性,每次调用都创建对象 @Scope("singleton") @Repository(value = "movieImpl") public class MovieInMemeryDaoImpl implements MovieDao {     List<String> movies = null;     public List<String> findAll() {         movies = new ArrayList<String>();         movies.add("风吹稻浪");         movies.add("冈萨雷斯凭");         movies.add("岁月");         return movies;     } }

Service实现

package org.study.spring.service; import java.util.Arrays; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import org.study.spring.dao.MovieDao; /**  * @Repository、@Service和 @Controller则是@Component的细化,  *                       用来表示更具体的用例(例如,分别对应了持久化层、服务层和表现层)。  *                       也就是说,你能用@Component来注解你的组件类, 但如果用@Repository、@Service  *                       或@Controller来注解它们,你的类也许能更好地被工具处理,或与切面进行关联。  *  * @author Administrator 默认为类名首字母小写,通过value属性可自定义Bean的标识  *  */ @Scope("prototype") @Service(value = "sms") public class SimpleMovieService {     static int i = 0;     private MovieDao movieFinder;     // @Autowired 自动进行注入,但须在spring配置文件中进行配置,并保证唯一性     @Autowired     public SimpleMovieService(MovieDao movieFinder) {         i++;         System.out.println("创建对象个数:" + i);         this.movieFinder = movieFinder;     }     public void printFindedMovie() {         List<String> movies = movieFinder.findAll();         System.out.println(Arrays.deepToString(movies.toArray()));     } }

客户端

package org.study.spring; import java.util.Arrays; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.study.spring.service.SimpleMovieService; public class MainApp {     /**      * @param args      */     public static void main(String[] args) {         ApplicationContext ctx = new ClassPathXmlApplicationContext("ctx.xml");         String[] beanNames = ctx.getBeanDefinitionNames();         System.out                 .println("Spring中的定义的Bean有:" + Arrays.deepToString(beanNames));         System.out.print("找到的电影有:");         SimpleMovieService simpleBean1 = (SimpleMovieService) ctx                 .getBean("sms");         simpleBean1.printFindedMovie();         SimpleMovieService simpleBean2 = (SimpleMovieService) ctx                 .getBean("sms");         simpleBean2.printFindedMovie();         System.out.println("修改@Scope属性值,比较两次输出的不同!");     } }

转载请注明原文地址: https://www.6miu.com/read-5048030.html

最新回复(0)