首页 > 编程知识 正文

springmvc注解配置,springmvc中注解的作用

时间:2023-05-05 00:52:41 阅读:176707 作者:719

文章目录1. Spring原创评论2 .实现XML方式配置3 .实现评论配置方式4. Spring新评论

1. Spring原始注释Spring是一种代码轻量级重构的框架,结构沉重,影响开发效率,所以注释开发是一种趋势,注释代替xml配置文件可以简化结构,提高开发效率Spring的原始注释主要代替Bean的配置

注意:

使用注释进行开发时,必须在applicationContext.xml中设置组件扫描。 这是为了指定必须扫描哪些包及其子包下的Bean,以标识使用注释设置的类、字段和方法。 -扫描注释的组件--context : component-scan base-package=' com.XDR 630 '/context : component-scan2. XML方法的

userDao

publicinterfaceuserdao { public void save (; } userDaoImpl

publicclassuserdaoimplimplementsuserdao { @ overridepublicvoidsave () } { system.out.println (save running.' ) }; } }用户服务

公共语音服务{公共语音服务(; } userServiceImpl

publicclassuserserviceimplimplementsuserservice { privateuserdaouserdao; publicvoidsetuserdao (userdao userdao ) { this.userDao=userDao; } @Override public void save () { userDao.save ); }} applicationContext.xml

bean id=' userdao ' class=' com.XDR 630.Dao.impl.userdao impl '/bean bean id=' userservice ' class=' com.XDR 630

publicclassusercontroller { publicstaticvoidmain [ ] args } { applicationcontextapp=newclasspathxmlapplicationconconter user userser userService.save (; }

3 .注释放置方式实现UserDaoImpl下的注释,@component(userdao ) )为以下bean的放置bean id=' userdao ' class=' com.XDR 630.Dao.impponent )

userServiceImpl中的bean id=' userservice ' class=' com.XDR 630.service.impl.userserviceimpl ' property name=' userdao

在applicationContext.xml下,组件要扫描的程序包context : component-scan base-package=' com.XDR 630 '/context : component

xml和注释设置可以获得相同的效果

因为在@Component评论中不能马上知道是哪个层,所以Spring派生出@Repository,@Service,@Controller这3个评论,可以得到与@Component效果相同的效果。

注意:使用注释方法时,可以省略set方法。 例如,删除userServiceImpl的set方法也可以正常工作。

将注释放到属性中,直接通过反射代入属性,所以用以下方法也可以使用代入的属性

但是,在使用xml结构的情况下,set侧

法是不能省略的

把上面的 @Qualifier(“userDao”) 注释掉,也能成功运行,直接写@Autowired也能注入。因为@Autowired 是按照数据类型从Spring容器中进行匹配的,当Spring扫描到这个注解之后,它会直接从Spring容器当中找一个 userDao 类型的 bean,找到之后直接注入。如果容器中 UserDao 类型有多个bean,就不能这样写了 。

按照类型注入,@Autowired

按照名称注入,@Autowired 和 @Qualifier 要一起使用

@Resources 相当于@Autowired 和 @Qualifier

@Value 注入普通数据类型,如:把 hello 注入给 driver


使用@Value进行字符串的注入



使用@Scope标注Bean的范围

使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法

这里没打印销毁的方法原因是:因为容器还没有关闭程序就执行完了,所以造成销毁的方法还没打印出来

手动关闭就可以看到销毁的方法打印了

4. Spring新注解

使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:

非自定义的Bean的配置:<bean>加载properties文件的配置:<context:property-placeholder>组件扫描的配置:<context:component-scan>引入其他文件:<import>

下面是实现下使用注解完全替代 xml 文件配置

新建一个核心配置类:SpringConfiguration,相当于总配置

//标志改类是Spring核心配置类@Configuration//<context:component-scan base-package="com.xdr630"></context:component-scan>@ComponentScan("com.xdr630")//<import resource="xxx"/>@Import({DataSourceConfiguration.class})public class SpringConfiguration { } @Import({DataSourceConfiguration.class}) 里面的值其实是一个数组,可以加载多个类,如: @Import({DataSourceConfiguration.class,xxx.class}) 新建数据源配置类:DataSourceConfiguration,相当于分配置 //<context:property-placeholder location="classpath:jdbc.properties"/>@PropertySource("classpath:jdbc.properties")public class DataSourceConfiguration { @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean("dataSource") //Spring会将当前方法的返回值以指定名称存到Spring容器当中 public DataSource getDataSource() throws PropertyVetoException { ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass(driver); dataSource.setJdbcUrl(url); dataSource.setUser(username); dataSource.setPassword(password); return dataSource; }} 测试加载核心配置类创建Spring容器 public class UserController { public static void main(String[] args) { //ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class); UserService userService = app.getBean(UserService.class); userService.save(); }}


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。